diff options
author | wolfsuit <wolfsuit> | 2002-06-10 05:38:22 (GMT) |
---|---|---|
committer | wolfsuit <wolfsuit> | 2002-06-10 05:38:22 (GMT) |
commit | df0db6490b910ca58d2fcdf9ecda4a309040beb7 (patch) | |
tree | c9c9fd7040d98dbd9ff16934d14ed4aeb2a9101a | |
parent | 62b2e5a6d41984327fb1459770b4c654bf2b9177 (diff) | |
download | tk-df0db6490b910ca58d2fcdf9ecda4a309040beb7.zip tk-df0db6490b910ca58d2fcdf9ecda4a309040beb7.tar.gz tk-df0db6490b910ca58d2fcdf9ecda4a309040beb7.tar.bz2 |
Merging with TOT as of 06/09/2002.
147 files changed, 12594 insertions, 6952 deletions
@@ -1,3 +1,576 @@ +2002-06-06 Donal K. Fellows <fellowsd@cs.man.ac.uk> + + * win/tkWinCursor.c (TkGetCursorByName): Fixed so that the reading + of cursors from a file with a cursor spec was built using [list] + works when the file has a space in instead of requiring fiddling + with backslashes. + +2002-06-06 Anton Kovalenko <a_kovalenko@users.sourceforge.net> + + * library/msgbox.tcl (MessageBox): Add -default normal + when creating non-default buttons for message box. + They already get -default normal when they're + unfocused, and dialog window size used to change suddenly + in such cases. + +2002-06-05 Anton Kovalenko <a_kovalenko@users.sourceforge.net> + + * unix/tkUnixFont.c (Tk_DrawChars): Don't assume that + one char is always one byte, and that required + subfont for the last character in any string is + the same as for the previous character + [Bug #559435] [Patch #559437] + +2002-05-27 Mo DeJong <mdejong@users.sourceforge.net> + + * changes: Document [wm transient .t .t] error. + * tests/wm.test: Check that setting a window + as a transient of itself raises an error. Check + that passing a non-toplevel window to the wm + transient command uses the enclosing toplevel. + * unix/tkUnixWm.c (Tk_WmCmd): Raise an error + if the user tries to make a toplevel a + transient of itself. + * win/tkWinWm.c (Tk_WmCmd): Raise an error + if the user tries to make a toplevel a + transient of itself. Test for other error + before checking for the transient self error. + +2002-05-27 Mo DeJong <mdejong@users.sourceforge.net> + + * unix/tkUnixWm.c (WmInfo, TkWmCleanup, TkWmNewWindow, + TkWmMapWindow, TkWmDeadWindow, Tk_WmCmd): Replace + WmInfo's master and masterWindowName members with + a masterPtr member. This implementation is much + simpler and mirrors the Win32 implementation. This + change makes it easy to check the flags of the + master window. No user visible changes. + +2002-05-27 Mo DeJong <mdejong@users.sourceforge.net> + + * generic/tkInt.decls: Add unix decl for TkpWmSetState. + * generic/tkIntPlatDecls.h: Regen. + * generic/tkStubInit.c: Regen. + * tests/wm.test: Test state changes between iconic, + normal, and withdrawn both before and after initial + mapping. + * unix/tkUnixWm.c (Tk_WmCmd, TkpWmSetState): Move + state change code into TkpWmSetState to more closely + match the Win32 implementation. No user visible changes. + +2002-05-27 Mo DeJong <mdejong@users.sourceforge.net> + + * tests/embed.test: Added cross platform embed tests. + Check that window passed to -use has the -container + option set. + * tests/wm.test: Remove useless catch call. Deiconify + . just in case, stackorder tests will not pass unless + it is in the normal state. Add -container flag to + embedded stackorder test. + * unix/tkUnixEmbed.c (TkpUseWindow): + * win/tkWinEmbed.c (TkpUseWindow): Lookup Tk window + based on the id passed in as the value for -use. + Generate an error if the Tk window did not have + the -container option set. + +2002-05-26 Peter Spjuth <peter.spjuth@space.se> + + * generic/tkButton.c (ConfigureButton): When creating + a radiobutton with -value "" it was not drawn properly + if the -variable was created by the radiobutton. + [Bug #548765] + +2002-05-26 Peter Spjuth <peter.spjuth@space.se> + + * generic/tkCanvText.c (ComputeTextBbox): Negative + coordinates were rounded badly causing a 1 pixel + displacement. [Bug #556526] + +2002-05-24 Mo DeJong <mdejong@users.sourceforge.net> + + * mac/tkMacWm.c (Tk_WmCmd): + * tests/unixWm.test: Move wm transient checks over + to wm.test so they will be run on all systems. + * tests/wm.test: Add tests to check for error when + an iconwindow is passed to the wm transient command. + * unix/tkUnixWm.c (Tk_WmCmd): + * win/tkWinWm.c (Tk_WmCmd): Raise an error if one + of the windows passed to the wm transient command + is an iconwindow for another toplevel. + +2002-05-23 Mo DeJong <mdejong@users.sourceforge.net> + + * mac/tkMacWm.c (TkWmStackorderToplevelWrapperMap): + * tests/wm.test: Add embedded Window test case for + the stackorder command. + * unix/tkUnixWm.c (TkWmStackorderToplevelWrapperMap): + * win/tkWinWm.c (TkWmStackorderToplevelWrapperMap): + Ignore embedded windows during wm stackorder command. + +2002-05-21 Mo DeJong <mdejong@users.sourceforge.net> + + * unix/configure: Regen. + * unix/configure.in: Invoke SC_ENABLE_SHARED before + calling SC_CONFIG_CFLAGS so that the SHARED_BUILD + variable can be checked inside SC_CONFIG_CFLAGS. + * unix/tcl.m4: Update from Tcl. + +2002-05-20 Don Porter <dgp@users.sourceforge.net> + + * library/tk.tcl: A little namespace cleanup on Daniel Steffen's + latest revisions to avoid defining new global commands. + +2002-05-20 Daniel Steffen <das@users.sourceforge.net> + + * mac/tkMacInit.c: + * mac/tkMacTclCode.r: include msgcat package in resources + as bgerror depends on it. Restores ability of mac static + build to run standalone (except for encoding file issues). + + * mac/tkMacInit.c: + * library/console.tcl: + * library/tk.tcl: fix tk.tcl not sourcing library files + that define bindings at startup on mac. (independent of + tk library files being in resources or on auto_path) + +2002-05-08 Don Porter <dgp@users.sourceforge.net> + + * library/bgerror.tcl: + * library/tclIndex: Cleaned up namespace usage of the bgerror + dialog. Completes soft dependence on msgcat. [FR 539309] + +2002-05-07 David Gravereaux <davygrvy@pobox.com> + * win/makefile.vc: Problem with TCLDIR macro not accepting + forward slash path seperators resolved. Added the same logic + to INSTALLDIR, too. [Bug #553208] + +2002-04-26 Jeff Hobbs <jeffh@ActiveState.com> + + * unix/configure: + * unix/tcl.m4: change HP-11 SHLIB_LD_LIBS from "" to ${LIBS} so + that the .sl knows its dependent libs. + +2002-04-24 Daniel Steffen <das@users.sourceforge.net> + + * mac/tkMacTclCode.r: + * mac/tkMacResource.r: added check of + TCLTK_NO_LIBRARY_TEXT_RESOURCES #define to allow disabling the + inclusion of the tk library code in the resource fork of Tk + executables and shared libraries. + Moved tk library code inclusion to separate file like in tcl. + Added 'panedwindow' resource. + +2002-04-22 Jeff Hobbs <jeffh@ActiveState.com> + + * library/button.tcl (ButtonLeave): corrected the 3 + implementations of ButtonLeave to check for Priv(relief) existing + before trying to use it. [Patch #541849] + + * generic/tkTextDisp.c (DisplayLineBackground): + * unix/tkUnix3d.c (Tk_3DHorizontalBevel): + * unix/tkUnixFont.c (Tk_DrawChars): applied fixes to not overrun + the X window 16-bit size limit. [Patch #541999] (bonfield) + +2002-04-22 Donal K. Fellows <fellowsd@cs.man.ac.uk> + + * generic/tkTextDisp.c (GetXView,GetYView): Comparison with + previous values of scrollbar range are now done in a way that is + sensitive to the bizarreness of floating-point on architectures + where IEEE-FP is not used on the processor. Also increased the + size of the temporary buffer to take account of the fact that + TCL_DOUBLE_SPACE is meant to only imply enough space to take a + printed double and trailing '\0', and no more. [Bug #223739] + (FP_EQUAL_SCALE): New macro to help compare floating-point numbers + for equality in a sane way, used in GetXView and GetYView. + +2002-04-12 Jeff Hobbs <jeffh@ActiveState.com> + + * generic/tkWindow.c (TkCloseDisplay): Added to centralize where a + display was closed. This handles freeing memory associated with a + display and closing it. + (DeleteWindowsExitProc): actually close displays. This would also + ideally be done in Tk_DestroyWindow when the last window on the + display has been closed, but that still has unresolved order of + cleanup problems. + (Tk_DestroyWindow): added TkFocusFree call. + + * generic/tkStubInit.c: + * generic/tkIntPlatDecls.h: + * generic/tkIntDecls.h: + * generic/tkInt.decls: added TkFocusFree, TkClipCleanup and + TkGCCleanup generic private procs, and TkWmCleanup, TkSendCleanup + and TkFreeXId unix private procs. + + * generic/tkInt.h: + * unix/tkUnixXId.c (TkFreeXId): frees XID resources. + Made idCleanupScheduled a Tcl_TimerToken (was int) in TkDisplay + structure to allow us to delete the timer scheduled for it. + + * unix/tkUnixWm.c (TkWmStackorderToplevel): ensure children + structure is freed. + (ConfigureEvent, ComputeReparentGeometry): Add extra wm tracing info + (TkWmRestackToplevel): initialize changes to 0 to prevent UMR. + Use WaitForConfigureNotify on all windows. This part still + requires fixing as it is the root of the 2 second raise delay on + some window managers (those that use extra wrapper windows of + their own). + + * unix/tkUnixSend.c (TkSendCleanup): free send-related resources + + * unix/tkUnixEvent.c (TkpCloseDisplay): call TkSendCleanup and + TkWmCleanup. + + * unix/tkUnixSelect.c (SelRcvIncrProc): added missing Tcl_Release + of interp + + * generic/tkGet.c (FreeUidThreadExitProc): free thread-specific + resources on thread exit + + * generic/tkFocus.c (TkFocusFree): frees TkMainInfo data + * generic/tkClipboard.c (TkClipCleanup): frees TkDisplay data + * generic/tkGC.c (TkGCCleanup): frees TkDisplay data + + * unix/tkUnixFont.c (FontPkgCleanup): cleanup thread specific font + resources on thread exit. + + * mac/tkMacXStubs.c (TkpOpenDisplay): memset the initial display + structures to 0. + + * generic/tkOption.c (OptionThreadExitProc): freed tsd option + stacks on thread exit. + (Tk_GetOption): free mem used to get Tk_Uid + + * generic/tkMenu.c (ConfigureMenu): freed saved options in all + error cases. + + * win/tkWinInt.h: declaration for TkWinGetUnicodeEncoding + * win/tkWinDialog.c (GetFileNameW): use TkWinGetUnicodeEncoding + * win/tkWinInit.c (TkpDisplayWarning): use TkWinGetUnicodeEncoding + * win/tkWinFont.c: use TkWinGetUnicodeEncoding instead of static + unicodeEncoding. + + * win/tkWinX.c (Tk_SetCaretPos): remove WM_IME_STARTCOMPOSITION + and place the IME position within Tk_SetCaretPos. Cache results in + Tk_SetCaretPos to reduce unnecessary repositioning. Also call + DestroyCaret if we receive WM_KILLFOCUS. + (TkpOpenDisplay): ZeroMemory the initial display structures. + (TkWinGetUnicodeEncoding): Added so that Windows only needs to + cache this value one, and then free it in TkWinXCleanup. + (HandleIMEComposition): add support for Win98 and ATOK13 + IME. (yamamoto) + + * generic/tkConsole.c (ConsoleCmd): correct return that should + have just set result code. + + * generic/tkImgPhoto.c: Added PhotoFormatThreadExitProc to clean + up on thread exit. (Tk_PhotoPutBlock) slight code updates + + * generic/tkPanedWindow.c (DestroyPanedWindow, ConfigureSlaves): + fix mem leaks in not freeing slave info + + * win/configure: + * win/tcl.m4: Enabled COFF as well as CV style debug info with + --enable-symbols to allow Dr. Watson users to see function info. + More info on debugging levels can be obtained at: + http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp + +2002-04-10 Mo DeJong <mdejong@users.sourceforge.net> + + * doc/wm.n: + * mac/tkMacWm.c: + * tests/wm.test: + * unix/tkUnixWm.c: + * win/tkWinWm.c: Update wm stackorder usage message + to make it clear that either 1 or 3 arguments are + required. [Bug 540013] + +2002-04-08 Daniel Steffen <das@users.sourceforge.net> + + * mac/tkMacProjects.sea.hqx: added tkPanedWindow.c to projects + * mac/tkMacAppInit.c: fixes to MSL stdin/stdout hookup to the + TkConsole when using shared MSL libraries; fix for crashing + bug on exit: writing to stdin/sterr when console has already + been destroyed. (both fixes need support in MSL, see + 'CW Pro6 changes' in tcl/mac/tcltkMacBuildSupport.sea.hqx) + * mac/tkMacDialog.c: fixes to Navigation Services Dialog filter. + * mac/tkMacDraw.c: add panic for overwide TkImages that would + crash Tk on mac otherwise. + +2002-04-05 Jeff Hobbs <jeffh@ActiveState.com> + + * mac/tkMacXStubs.c: added Tk_SetCaretPos stub (does nothing). + * win/tkWinX.c: added Tk_SetCaretPos code to position IME windows + correctly when WM_IME_STARTCOMPOSITION is received. + * unix/tkUnixKey.c: added Tk_SetCaretPos and code for setting + XIM caret in TkpGetString. + + * generic/tkStubInit.c: + * generic/tkDecls.h: + * generic/tk.decls: added Tk_SetCaretPos declaration. This command + allows users to indicate the cursor position and is used by XIM + (Unix) or IME (Windows) to place the caret box correctly. It is + also part of correct Accessibility style on Windows to make the + magnifier jump to the focus point. + + * win/tkWinButton.c (TkpDisplayButton): + * generic/tkTextMark.c (TkTextInsertDisplayProc): + * generic/tkCanvText.c (DisplayCanvText): + * generic/tkEntry.c (DisplayEntry): added Tk_SetCaretPos calls + + * generic/tkInt.h: added TK_XIM_SPOT #define (default 1). + Added XFontSet attribute to TkDisplay when TK_XIM_SPOT is true. + * generic/tkEvent.c (Tk_HandleEvent): made sure inputContexts are + not getting created on DestroyNotify events (for dead windows). + Added over-the-spot support if TK_XIM_SPOT is defined (default). + The is the nicer XIM behavior, but uses a bit more memory. + + * unix/tkUnixEvent.c: + * generic/tkWindow.c: moved OpenIM over to tkUnixEvent.c. + Removed setting inputContext to null in Tk_MakeWindowExist as it + was redundant. + + * unix/tkUnixWm.c (CreateWrapper): Removed redundat setting of + inputContext to null. + + * win/Makefile.in: changed gdb and shell targets to properly build + all binaries before running (otherwise an error often occured). + +2002-03-28 David Gravereaux <davygrvy@pobox.com> + + * win/.cvsignore (new): + * win/lamp.bmp (new): + * win/makefile.vc: + * win/nmakehlp.c (new): + * win/rules.vc: Brought the makefile up-to-date with Tcl's one. + This now has support for Win9x issues and the winhelp target now + exists. Color scheme can be changed. I'm just imparting a first + suggestion using orange :) I'll have to think about the install + portion of the helpfile as I'll need to do some tricks to insert + tk's contents file into Tcl's using some special winhlp32.exe + switches. [Bug 533862 527941] + + * win/makefile.vc: Tk helpfile is now installing itself into Tcl's + contents file as part of the install target and rebuilding the + contents table as desired. [Bug 527941] + + * doc/console.n: Changed topic from "Tcl Built-In Commands" to + "Tk Built-In Commands" + + * win/buildall.vc.bat: Update to match Tcl. + +2002-03-26 Andreas Kupries <andreask_kupries@users.sourceforge.net> + + * unix/tkUnixFont.c: Added inclusion of <arpa/inet.h>. This fixes + a GCC/HPUX problem with missing a "htons". See also + "tclUnixPort.h" for equivalent code. + +2002-03-21 David Gravereaux <davygrvy@pobox.com> + + * win/makefile.vc: Changed optimize flag to -0ti instead of -02. + [Bug 528441] + +2002-03-20 Don Porter <dgp@users.sourceforge.net> + + * generic/tkButton.c (ButtonTextVarProc,ButtonVarProc): + * generic/tkCmds.c (WaitVariableProc): + * generic/tkEntry.c (EntryTextVarProc): + * generic/tkListbox.c (ListboxListVarProc): + * generic/tkMenu.c (MenuVarProc): + * generic/tkMenubutton.c (MenuButtonTextVarProc): + * generic/tkMessage.c (MessageTextVarProc): + * generic/tkScale.c (ScaleVarProc): Updates to handle change in + type of part2 argument of Tcl_VarTraceProc typedef. [TIP 27] + [Patch 532644]. + +2002-03-19 Jeff Hobbs <jeffh@ActiveState.com> + + * generic/tkOldConfig.c (Tk_ConfigureValue): prevent leaving + interp->result as NULL. + +2002-03-07 Donal K. Fellows <fellowsd@cs.man.ac.uk> + + * library/text.tcl (TextPasteSelection): Renaming of TextPaste to + prevent confusion with tk_textPaste. Stopped code from inserting + selections twice, which seems to have happened with TIP#26, and + reorganized code to reduce amount of stuff protected by catch + which is tricky to maintain. + (tk_textPaste): Reduce amount of code protected by catch. + +2002-03-06 Mo DeJong <mdejong@users.sourceforge.net> + + * win/tkWinX.c: Define _WIN32_IE as 0x0300 + before including commctrl.h so that we can + access the InitCommonControlsEx API when + building Tk with mingw. + +2002-03-06 Donal K. Fellows <fellowsd@cs.man.ac.uk> + + * README, generic/tk.h, unix/configure.in, unix/tk.spec: + * win/configure.in: Bumped patchlevel; this might need to change + in the future, but it will help us distinguish between the CVS + version and the most recent released version. + +2002-03-05 Jeff Hobbs <jeffh@ActiveState.com> + + *** 8.4a4 TAGGED FOR RELEASE *** + + * unix/README: updated --* options docs. + + * unix/tk.spec: fixed URL refs to use www.tcl.tk or SF. + +2002-03-04 Jeff Hobbs <jeffh@ActiveState.com> + + * README: + * mac/README: + * unix/README: + * win/README: updated to use www.tcl.tk URL. + +2002-03-03 Jeff Hobbs <jeffh@ActiveState.com> + + * library/entry.tcl: added catch around Triple-1 binding use of + sel.last + +2002-02-28 Don Porter <dgp@users.sourceforge.net> + + * library/console.tcl (ConsoleBind): Corrected console <<Paste>> + binding on Unix platforms. + +2002-02-26 Jeff Hobbs <jeffh@ActiveState.com> + + * unix/configure: Regen. + * unix/tcl.m4: Update from Tcl. + + * generic/tkWindow.c (Tk_MainWindow, Tk_GetNumMainWindows): + protect against being called before Tcl stubs are init'ed. + [Bug #220916] (porter) + +2002-02-25 Jeff Hobbs <jeffh@ActiveState.com> + + * generic/tkText.c (ConfigureText): reenable the blinking cursor + on state change where necessary. [Bug #503772] + + * tests/listbox.test: + * generic/tkListbox.c: corrected error handling when setting to an + invalid listvar value. [Bug #503613] + + * library/scale.tcl: mirror B2 bindings to B3 on Windows to better + accomodate two button mice. [Patch #493145] + + * library/panedwindow.tcl: improved proxy sash handling. (boudaillier) + +2002-02-25 Donal K. Fellows <fellowsd@cs.man.ac.uk> + + * tests/filebox.test: Reorganised and fixed so that tests are + executed fewer times (!) and the automatic extension adding + behaviour of tk_getSaveFile is tested. + +2002-02-23 Mo DeJong <mdejong@users.sourceforge.net> + + * unix/configure: Regen. + * unix/tcl.m4: Update from Tcl. + +2002-02-22 Jeff Hobbs <jeffh@ActiveState.com> + + * generic/tkPanedWindow.c (PanedWindowWidgetObjCmd): fixed returns + that should have been breaks instead. Corrected .pw configure + handling for insufficient args. [Patch #521436] (boudaillier) + + * mac/tkMacDefault.h: + * unix/tkUnixDefault.h: + * win/tkWinDefault.h: changed panedwindow default relief to flat, + a more natural outer relief. + + * library/panedwindow.tcl (ReleaseSash): changed to not pass x and + y args at all (they aren't used). + Added proc comments. Made configuring sash cursor more efficient. + Added Cursor timer that restores the default cursor when pointer + is no longer over the sash. This is necessary because Leave + events won't be seen when moving into a paned child. + +2002-02-22 Donal K. Fellows <fellowsd@cs.man.ac.uk> + + * library/demos/widget: New section "Paned Windows" + * library/demos/paned2.tcl, library/demos/paned1.tcl: New files. + + * library/panedwindow.tcl (ReleaseSash): Added missing arguments. + * library/tk.tcl: Bindings for paned window were not being loaded + by default. + + * unix/tkUnixMenu.c (GetMenuLabelGeometry,DrawMenuEntryLabel): + Stop meaningless GCC warnings. + +2002-02-21 Jeff Hobbs <jeffh@ActiveState.com> + + * doc/panedwindow.n (new): + * generic/tkPanedWindow.c (new): + * generic/tkInt.h: + * generic/tkWindow.c: + * library/panedwindow.tcl (new): + * mac/tkMacDefault.h: + * tests/panedwindow.test (new): + * unix/Makefile.in: + * unix/tkUnixDefault.h: + * win/Makefile.in: + * win/makefile.vc: + * win/tkWinDefault.h: added implementation of TIP #41, panedwindow + widget. [Patch #512503] (melski) + + * generic/tkOption.c (ReadOptionFile): fixed Tcl_Seek casting to + remove warnings (we expect no option files with be > 2GB). + + * unix/configure: regenerated + * unix/tcl.m4: updated to sync with Tcl's tcl.m4 + Added --enable-64bit support for AIX-4 using IBM's xlc (-q64 flag). + +2002-02-19 Don Porter <dgp@users.sourceforge.net> + + * changes: First draft of updated changes for 8.4a4 release. + +2002-02-19 Donal K. Fellows <fellowsd@cs.man.ac.uk> + + * generic/tkImgPhoto.c (MatchFileFormat): Tcl_Seek takes + Tcl_WideInt offset (three places.) + * generic/tkImgPPM.c (FileReadPPM): Tcl_Seek takes Tcl_WideInt offset. + * generic/tkFrame.c (ConfigureFrame): Stop GCC warning. + + * generic/tkImgGIF.c: Made file meet the formatting rules from the + Tcl Engineering Manual better; mostly differences in whitespace. + +2002-02-18 Jeff Hobbs <jeffh@ActiveState.com> + + * unix/configure: regen'd + * unix/tcl.m4: + * unix/configure.in: added macros and calls to SC_TCL_EARLY_FLAGS + and SC_TCL_64BIT_FLAGS, part of TIP #72. + +2002-02-14 Mo DeJong <mdejong@users.sourceforge.net> + + * library/entry.tcl: + * library/text.tcl: Adjust <Double-1> and <Triple-1> bindings + so that no anchor point is set and the insertion cursor is + set to the last character in the selection. [Bug 220943] + * tests/event.test: Add test cases for double click and + drag as well as triple click and drag in the text and + entry widgets. + +2002-02-14 Mo DeJong <mdejong@users.sourceforge.net> + + * tests/event.test (_text_ind_to_x_y, _get_selection): Fix + incorrect use of results from bbox invocation so that + y center point for a give index is calculated correctly. + Add new method to return the selection and use it in + test cases. Always lappend to the result list to avoid + case where initial result includes a space. + +2002-02-07 Don Porter <dgp@users.sourceforge.net> + + * generic/tkMain.c: + * mac/tkMacInit.c: + * mac/tkMacKeyboard.c: + * win/tkWinDialog.c: + * win/tkWinTest.c: modified some callers of Tcl routines that + were restored to return (char *) pointing into Tcl_DStrings. + 2002-02-05 Jim Ingham <jingham@apple.com> * macosx/tkMacOSXMenu.c: Fix 513222. We were going to @@ -1,11 +1,11 @@ README: Tk - This is the Tk 8.4a4 source distribution. + This is the Tk 8.4a5 source distribution. Tcl/Tk is also available through NetCVS: http://tcl.sourceforge.net/ You can get any source release of Tcl from the file distributions link at the above URL. -RCS: @(#) $Id: README,v 1.31 2001/08/08 18:41:10 dgp Exp $ +RCS: @(#) $Id: README,v 1.31.2.1 2002/06/10 05:38:23 wolfsuit Exp $ 1. Introduction --------------- @@ -16,7 +16,7 @@ toolkit implemented with the Tcl scripting language. For details on features, incompatibilities, and potential problems with this release, see the Tcl/Tk 8.4 Web page at - http://www.purl.org/tcl/home/software/tcltk/8.4.html + http://www.tcl.tk/software/tcltk/8.4.html or refer to the "changes" file in this directory, which contains a historical record of all changes to Tk. @@ -29,7 +29,7 @@ SourceForge at: with the Tcl Developer Xchange at: - http://www.purl.org/tcl/home/ + http://www.tcl.tk/ Tk is a freely available open source package. You can do virtually anything you like with it, such as modifying it, redistributing it, @@ -2,7 +2,7 @@ This file summarizes all changes made to Tk since version 1.0 was released on March 13, 1991. Changes that aren't backward compatible are marked specially. -RCS: @(#) $Id: changes,v 1.47 2001/08/15 19:51:50 dgp Exp $ +RCS: @(#) $Id: changes,v 1.47.2.1 2002/06/10 05:38:23 wolfsuit Exp $ 3/16/91 (bug fix) Modified tkWindow.c to remove Tk's Tcl commands from the interpreter when the main window is deleted (otherwise there will @@ -4849,6 +4849,9 @@ then widget was destroyed (hobbs) 2000-03-02 (feature enhancement) added %V substitution to entry widget validation to clarify type of validation occuring (hobbs) +2000-03-07 (feature enhancement) added -disabledforeground/-state to labels +(melski) + 2000-03-29 (config enhancement) improved build support for gcc/mingw on Windows (nijtmans, hobbs) and added RPM target (melski) @@ -4970,37 +4973,42 @@ borders on multiple screens simultaneously. (hobbs, hipp) --- Released 8.3.2, August 9, 2000 --- See ChangeLog for details --- - * Added support for mingw (gcc on Windows), AIX-5 and Win64 builds - (dejong, hobbs) +2000-06-15 (new feature) [tk_getOpenFile ... -multiple] (melski) - * Added -multiple option to tk_getOpenFile (melski) +2000-06-29 (new feature) localization support in Tk dialogs (duperval, +melski, et al) - * Introduced some localization support to Tk dialogs (duperval, et al) +200-07-28 (new feature) -state option for listbox, better native color +defaults (melski) - * Improved support for static builds on Windows (gravereaux) +2000-08 (feature rewrites) Tcl_Obj'ified clipboard, message, tkwait, +bindtags, grab. place, selection commands (melski) - * New -state option for listbox, better native color defaults (melski) +2000-08-24 (new feature) More correct GNU configure support (no more +--enable-gcc) (dejong) + *** POTENTIAL INCOMPATIBILITY *** - * Tcl_Obj'ified clipboard, message, tkwait, bindtags, grab. place, - selection commands (melski) +2000-08-29 (bug fix) Corrected Windows menu indicator drawing (oberhumer) - * More correct GNU configure support (no more --enable-gcc) (dejong) +2000-09-01 (bug fix) Added tkPlatDecls.h to default install (melski) - * Corrected Windows menu indicator drawing (oberhumer) +2000-09-17 (new feature) Added TK_OPTION_CUSTOM type, similar to +TK_CONFIG_CUSTOM (melski) - * Added tkPlatDecls.h to default install (melski) +2000-09-29 (bug fix) Several fixes for multi-display uses of Tk (hipp, hobbs) - * Added TK_OPTION_CUSTOM type, similar to TK_CONFIG_CUSTOM (melski) +2000-10-05 (new feature) Tk_CreateAnonymousWindow API to create anonymous +Tk windows controllable from C (melski) - * Several fixes for multi-display uses of Tk (hipp, hobbs) +2000-10-27 (new default behavior) [tk useinputmethods 1] is the default +in tk.tcl, for users of XIM and "dead" keys (hobbs) - * New Tk_CreateAnonymousWindow C API to create anonymous Tk windows - controllable from C (melski) +2000-10-30 Improved support for static builds on Windows (gravereaux) - * Improved error checking in Windows native dialogs (melski, hobbs) + * Added support for mingw (gcc on Windows), AIX-5 and Win64 builds + (dejong, hobbs) - * Made 'tk useinputmethods 1' the default in tk.tcl, for users of XIM and - "dead" keys (hobbs) + * Improved error checking in Windows native dialogs (melski, hobbs) --- Released 8.4a2, November 3, 2000 --- See ChangeLog for details --- @@ -5045,31 +5053,135 @@ screens (hipp) --- Released 8.3.3, April 6, 2001 --- See ChangeLog for details --- - * implemented [TIP #5], exporting Tk_ClassProcs/Tk_SetClassProcs and - adding a size field to Tk_ClassProcs (melski) +2000-11-21 (new feature)[TIP 5] Tk_ClassProcs, Tk_SetClassProcs API (melski) - * implemented [TIP #21], asymmetric padding in the pack and grid geometry - managers (hipp) +2000-12-13 (performance enhancement)[403327] Tcl_Objs of type "double" +are recognized in SetMMFromAny to speed up canvas coord calculations (hobbs) - * moved all private tk* commands and variables in the ::tk:: namespace - [TIP #44] (porter) - *** POTENTIAL INCOMPATIBILITY *** +2001-01-02 (new feature)[TIP 8] [wn iconbitmap -default] on Windows (darley) - * improved tests to better handle results on variant systems (hobbs) +2001-02-12 (new feature)[TIP #21] asymmetric padding in the pack and grid +geometry managers (hipp) + +2001-05-21 (new feature)[TIP #11], -compound for [menubutton] widget (helfter) - * implemented [TIP #11], the addition of -compound for the 'menubutton' - widget (helfter) +2001-06-03 (bug fix) corrected support for is10646 fonts on Unix, added a +ucs-2be encoding (welch) - * corrected support for is10646 fonts on Unix, added a ucs-2be encoding - (welch) +2001-07-02 (bug fix) allowed tkwin to be Tcl_EventuallyFree'd in +Tk_DestroyWindow so other widgets could register their use of it. Updated +entry and listbox widgets to use this, correcting potential crashes. (hobbs) + +2001-08-01 (interface rewrite)[TIP 44] moved all private tk[A-Z]* commands and +variables into the ::tk:: namespace (porter) + *** POTENTIAL INCOMPATIBILITY *** * overhaul of configure scripts for cleaner standard support and support of mingw gcc on Windows. (mdejong) - * allowed tkwin to be Tcl_EventuallyFree'd in Tk_DestroyWindow so other - widgets could register their use of it. Updated entry and listbox - widgets to use this, correcting potential crashes. (hobbs) + * improved tests to better handle results on variant systems (hobbs) * correct several minor Purify complaints (hobbs) --- Released 8.4a3, August 6, 2000 --- See ChangeLog for details --- + +2001-08-06 (new feature) added GNU (HURD) build support. (brinkman) + +2001-08-23 (new feature) added QNX-6 build support. (loverso) + +2001-08-24 (bug fix) correct several possible free memory reads and array +bounds read errors reported by purify. (hobbs) + +2001-08-27 (new feature) added call to Tcl_SetMainLoop which enables Tk to +be loaded interactively into tclsh and have the event loop kick in +correctly. (hobbs) + +2001-08-28 (bug fix) fixed tk_chooseDirectory crash on Win95. (baker) + +2001-08-28 (bug fix) removed 2 second 'raise' delay seen by some Unix +window managers. (hobbs, baker) + +2001-09-14 (bug fix) fixed memory leaks that occured if errors were +thrown while initializing the channel for an image. (darley) + +2001-09-20 (new feature) --enable-64bit support was added for HP 11 when +using the native compiler. + +2001-10-03 (new feature) finalized Win64 support with latest RC1 release +and SDK. (hobbs, stacy) + +2001-10-04 (new feature) added enhanced bgerror dialog from Hipp. (hobbs) + +2001-10-09 (new feature) added brace/quote matching and file/path/var +expansion to the Win/Mac console. (hobbs) + +2001-10-17 (bug fix) fixed file filtering in the motif file dialog (nelson) + +2001-10-17 (bug fix) updated Mac build support. (steffen) + +--- Released 8.3.4, October 19, 2001 --- See ChangeLog for details --- + +2001-08-14 (bug fix)[450545] Tk's Tcl_ObjTypes now registered (fellows) + +2001-08-20 (performance enhancement) internal use of a "window" Tcl_ObjType +(fellows) + +2001-08-20 (performance enhancement) Obj-ified [grid] and [pack] (spjuth) + +2001-09-26 (new feature)[TIP 18] add labels to frames, update geometry +managers (spjuth) + +2001-09-30 (new feature)[TIP 37] [grid {row|column}configure -uniform] (spjuth) + +2001-10-12 (new feature)[TIP 63] [$menu add ... -compound] (helfter) + +2001-10-18 (build improvement) no more warnings about building with +thread-enabled Tcl (hobbs) + +2001-11-10 (build improvement) new make target 'make gdb' (dejong) + +2001-11-12 (new feature)[TIP 26] simple undo/redo in text widget (callewaert) + +2001-11-12 (build improvement) revitalized makefile.vc (gravereaux) + +2001-11-17 (visual change) default button size on Windows changed to +conform to Windows style (hobbs) + **** POTENTIAL VISUAL INCOMPATABILITY **** + +2001-12-03 (new feature)[TIP 74] [wm stackorder] (dejong, steffen) + +2001-12 (new feature) more use of Unicode in native widgets on Windows (hobbs) + +2001-12-18 (bug fix)[413735] event-click-drag-1.2 test failure (porter) + +2001-12-28 (new feature) On Windows, buttons accept negative widths, meaning +minimum size, enabling native L&F (hobbs) + +2002-01 (bug fix) updates for CONST-ification in Tcl API, notably +Tcl_ParseArgv. Use -DUSE_NON_CONST to suppress source incompatibility + **** POTENTIAL INCOMPATABILITY **** + +2002-01-31 (bug fix)[508988] logic error in menu cloning (helfter) + +2002-02-01 (new feature)[TIP 14] [$photo transparency] (fellows) + +2002-02-01 (bug fix)[511956] C99 spec: avoid 'bool' as a variable name (hobbs) + +2002-02-19 (bug fix) updates to image code calls of Tcl_Seek/Tcl_Tell to +address TIP 72 changes (64-bit) in Tcl (fellows) + +2002-02-21 (new widget)[TIP 41] added [panedwindow] (hobbs) + +2002-02-22 (new feature) 64-bit support for xlc compiler on AIX-4 (hobbs) + +2002-02-25 (bug fix)[503772] blinking cursor fix in [text] (hobbs) + +2002-02-25 (bug fix)[503613] [listbox] handling of invalid listvar (hobbs) + +2002-02-25 (feature change)[493145] mirror B2 bindings to B3 on Windows (hobbs) + + * (updated demos) many updates to show new features (fellows) + +--- Released 8.4a4, March 5, 2002 --- See ChangeLog for details --- + +2002-05-27 (feature change) [wm transient .t .t] now raises an error diff --git a/doc/console.n b/doc/console.n index 2dad345..3aee9de 100644 --- a/doc/console.n +++ b/doc/console.n @@ -4,10 +4,10 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: console.n,v 1.3 2001/08/07 02:56:11 hobbs Exp $ +'\" RCS: @(#) $Id: console.n,v 1.3.2.1 2002/06/10 05:38:23 wolfsuit Exp $ '\" .so man.macros -.TH console n 8.4 Tk "Tcl Built-In Commands" +.TH console n 8.4 Tk "Tk Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME diff --git a/doc/getOpenFile.n b/doc/getOpenFile.n index ba14e1c..b4a489a 100644 --- a/doc/getOpenFile.n +++ b/doc/getOpenFile.n @@ -4,7 +4,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: getOpenFile.n,v 1.8.6.1 2002/02/05 02:25:14 wolfsuit Exp $ +'\" RCS: @(#) $Id: getOpenFile.n,v 1.8.6.2 2002/06/10 05:38:23 wolfsuit Exp $ '\" .so man.macros .TH tk_getOpenFile n 4.2 Tk "Tk Built-In Commands" @@ -77,7 +77,7 @@ Allows the user to choose multiple files from the Open dialog. On the Macintosh, this is only available when Navigation Services are installed. .TP -\fB\-message\fR +\fB\-message\fR \fIstring\fR Specifies a message to include in the client area of the dialog. This is only available on the Macintosh, and only when Navigation Services are installed. diff --git a/doc/panedwindow.n b/doc/panedwindow.n index 0c6cd60..1b9bcb6 100644 --- a/doc/panedwindow.n +++ b/doc/panedwindow.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: panedwindow.n,v 1.1.4.1 2002/06/10 05:07:59 wolfsuit Exp $ +'\" RCS: @(#) $Id: panedwindow.n,v 1.1.4.2 2002/06/10 05:38:23 wolfsuit Exp $ '\" .so man.macros .TH panedwindow n 8.4 Tk "Tk Built-In Commands" diff --git a/doc/photo.n b/doc/photo.n index c33a413..8fc63f7 100644 --- a/doc/photo.n +++ b/doc/photo.n @@ -9,7 +9,7 @@ '\" Department of Computer Science, '\" Australian National University. '\" -'\" RCS: @(#) $Id: photo.n,v 1.7.4.1 2002/02/05 02:25:14 wolfsuit Exp $ +'\" RCS: @(#) $Id: photo.n,v 1.7.4.2 2002/06/10 05:38:23 wolfsuit Exp $ '\" .so man.macros .TH photo n 4.0 Tk "Tk Built-In Commands" @@ -33,7 +33,7 @@ formats are supported, but an interface exists to allow additional image file formats to be added easily. A photo image is transparent in regions where no image data has been supplied .VS 8.4 -or where it has been set transparent by the \fBtransparency set\fB +or where it has been set transparent by the \fBtransparency set\fR subcommand. .VE 8.4 @@ -321,7 +321,7 @@ the photo image. Several subcommands are available: \fIimageName \fBtransparency get \fIx y\fR Returns a boolean indicating if the pixel at (\fIx\fR,\fIy\fR) is transparent. -\fIimageName \fBtransparency get \fIx y boolean\fR +\fIimageName \fBtransparency set \fIx y boolean\fR Makes the pixel at (\fIx\fR,\fIy\fR) transparent if \fIboolean\fR is true, and makes that pixel opaque otherwise. .RE @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: wm.n,v 1.6.4.1 2002/02/05 02:25:14 wolfsuit Exp $ +'\" RCS: @(#) $Id: wm.n,v 1.6.4.2 2002/06/10 05:38:23 wolfsuit Exp $ '\" .so man.macros .TH wm n 4.3 Tk "Tk Built-In Commands" @@ -400,7 +400,7 @@ source of the window's current size, or an empty string if no source has been specified yet. Most window managers interpret ``no source'' as equivalent to \fBprogram\fR. .TP -\fBwm stackorder \fIwindow\fR ?\fIisabove|isbelow\fR? \fI?window?\fR +\fBwm stackorder \fIwindow\fR ?\fIisabove|isbelow window\fR? The stackorder command returns a list of toplevel windows in stacking order, from lowest to highest. When a single toplevel window is passed, the returned list recursively includes all of the diff --git a/generic/tk.decls b/generic/tk.decls index d125ca2..fd036a9 100644 --- a/generic/tk.decls +++ b/generic/tk.decls @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tk.decls,v 1.15.2.4 2002/02/05 02:25:14 wolfsuit Exp $ +# RCS: @(#) $Id: tk.decls,v 1.15.2.5 2002/06/10 05:38:23 wolfsuit Exp $ library tk @@ -1158,6 +1158,12 @@ declare 244 generic { int minWidth, int minHeight) } +# New in 8.4a5 +# +declare 245 generic { + void Tk_SetCaretPos (Tk_Window tkwin, int x, int y, int height) +} + # Define the platform specific public Tk interface. These functions are # only available on the designated platform. @@ -1295,4 +1301,4 @@ declare 9 aqua { declare 10 aqua { int Tk_MacOSXIsAppInFront (void) -}
\ No newline at end of file +} diff --git a/generic/tk.h b/generic/tk.h index faf8152..36a3ec0 100644 --- a/generic/tk.h +++ b/generic/tk.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tk.h,v 1.57.2.2 2001/10/17 07:02:07 wolfsuit Exp $ + * RCS: @(#) $Id: tk.h,v 1.57.2.3 2002/06/10 05:38:23 wolfsuit Exp $ */ #ifndef _TK @@ -48,10 +48,10 @@ extern "C" { #define TK_MAJOR_VERSION 8 #define TK_MINOR_VERSION 4 #define TK_RELEASE_LEVEL TCL_ALPHA_RELEASE -#define TK_RELEASE_SERIAL 4 +#define TK_RELEASE_SERIAL 5 #define TK_VERSION "8.4" -#define TK_PATCH_LEVEL "8.4a4" +#define TK_PATCH_LEVEL "8.4a5" /* * The following definitions set up the proper options for Macintosh diff --git a/generic/tkButton.c b/generic/tkButton.c index e2a731c..401000c 100644 --- a/generic/tkButton.c +++ b/generic/tkButton.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkButton.c,v 1.13.2.1 2002/02/05 02:25:14 wolfsuit Exp $ + * RCS: @(#) $Id: tkButton.c,v 1.13.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkButton.h" @@ -520,10 +520,10 @@ static void ButtonSelectImageProc _ANSI_ARGS_(( ClientData clientData, int x, int y, int width, int height, int imgWidth, int imgHeight)); static char * ButtonTextVarProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, char *name1, char *name2, + Tcl_Interp *interp, char *name1, CONST char *name2, int flags)); static char * ButtonVarProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, char *name1, char *name2, + Tcl_Interp *interp, char *name1, CONST char *name2, int flags)); static int ButtonWidgetObjCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int objc, @@ -1129,6 +1129,16 @@ ConfigureButton(interp, butPtr, objc, objv) == NULL) { continue; } + + /* + * If a radiobutton has the empty string as value + * it should be selected. + */ + + if ((butPtr->type == TYPE_RADIO_BUTTON) && + (*Tcl_GetString(butPtr->onValuePtr) == 0)) { + butPtr->flags |= SELECTED; + } } } @@ -1539,7 +1549,7 @@ ButtonVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about button. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Name of variable. */ - char *name2; /* Second part of variable name. */ + CONST char *name2; /* Second part of variable name. */ int flags; /* Information about what happened. */ { register TkButton *butPtr = (TkButton *) clientData; @@ -1618,7 +1628,7 @@ ButtonTextVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about button. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Not used. */ - char *name2; /* Not used. */ + CONST char *name2; /* Not used. */ int flags; /* Information about what happened. */ { TkButton *butPtr = (TkButton *) clientData; diff --git a/generic/tkCanvText.c b/generic/tkCanvText.c index 43730cd..d9f9255 100644 --- a/generic/tkCanvText.c +++ b/generic/tkCanvText.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkCanvText.c,v 1.10.2.1 2002/02/05 02:25:14 wolfsuit Exp $ + * RCS: @(#) $Id: tkCanvText.c,v 1.10.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include <stdio.h> @@ -635,8 +635,8 @@ ComputeTextBbox(canvas, textPtr) * of the bounding box for the text item. */ - leftX = (int) (textPtr->x + 0.5); - topY = (int) (textPtr->y + 0.5); + leftX = (int) floor(textPtr->x + 0.5); + topY = (int) floor(textPtr->y + 0.5); switch (textPtr->anchor) { case TK_ANCHOR_NW: case TK_ANCHOR_N: @@ -828,6 +828,8 @@ DisplayCanvText(canvas, itemPtr, display, drawable, x, y, width, height) - (textInfoPtr->insertWidth / 2)), (double) (textPtr->header.y1 + y), &drawableX, &drawableY); + Tk_SetCaretPos(Tk_CanvasTkwin(canvas), drawableX, drawableY, + height); if (textInfoPtr->cursorOn) { Tk_Fill3DRectangle(Tk_CanvasTkwin(canvas), drawable, textInfoPtr->insertBorder, diff --git a/generic/tkClipboard.c b/generic/tkClipboard.c index cf87dc1..2a17823 100644 --- a/generic/tkClipboard.c +++ b/generic/tkClipboard.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkClipboard.c,v 1.7.6.1 2002/02/05 02:25:14 wolfsuit Exp $ + * RCS: @(#) $Id: tkClipboard.c,v 1.7.6.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkInt.h" @@ -623,6 +623,44 @@ Tk_ClipboardObjCmd(clientData, interp, objc, objv) /* *---------------------------------------------------------------------- * + * TkClipCleanup -- + * + * This procedure is called to cleanup resources associated with + * claiming clipboard ownership and for receiving selection get + * results. This function is called in tkWindow.c. This has to be + * called by the display cleanup function because we still need the + * access display elements. + * + * Results: + * None. + * + * Side effects: + * Resources are freed - the clipboard may no longer be used. + * + *---------------------------------------------------------------------- + */ + +void +TkClipCleanup(dispPtr) + TkDisplay *dispPtr; /* display associated with clipboard */ +{ + if (dispPtr->clipWindow != NULL) { + Tk_DeleteSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom, + dispPtr->applicationAtom); + Tk_DeleteSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom, + dispPtr->windowAtom); + /* + * It may be too late to call Tk_DestroyWindow, so just free the + * memory created directly. + */ + ckfree((char *) dispPtr->clipWindow); + dispPtr->clipWindow = NULL; + } +} + +/* + *---------------------------------------------------------------------- + * * TkClipInit -- * * This procedure is called to initialize the window for claiming diff --git a/generic/tkCmds.c b/generic/tkCmds.c index 65ec9e6..27fb2fb 100644 --- a/generic/tkCmds.c +++ b/generic/tkCmds.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkCmds.c,v 1.20.2.3 2002/02/05 02:25:14 wolfsuit Exp $ + * RCS: @(#) $Id: tkCmds.c,v 1.20.2.4 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkPort.h" @@ -34,7 +34,7 @@ static TkWindow * GetToplevel _ANSI_ARGS_((Tk_Window tkwin)); static char * WaitVariableProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, char *name1, char *name2, + Tcl_Interp *interp, char *name1, CONST char *name2, int flags)); static void WaitVisibilityProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); @@ -307,6 +307,7 @@ TkBindEventProc(winPtr, eventPtr) * *---------------------------------------------------------------------- */ + int Tk_BindtagsObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Main window associated with interpreter. */ @@ -391,7 +392,7 @@ Tk_BindtagsObjCmd(clientData, interp, objc, objv) } return TCL_OK; } - + /* *---------------------------------------------------------------------- * @@ -857,7 +858,7 @@ WaitVariableProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Pointer to integer to set to 1. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Name of variable. */ - char *name2; /* Second part of variable name. */ + CONST char *name2; /* Second part of variable name. */ int flags; /* Information about what happened. */ { int *donePtr = (int *) clientData; diff --git a/generic/tkConsole.c b/generic/tkConsole.c index c631fab..33a4d1d 100644 --- a/generic/tkConsole.c +++ b/generic/tkConsole.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkConsole.c,v 1.13.2.1 2002/02/05 02:25:14 wolfsuit Exp $ + * RCS: @(#) $Id: tkConsole.c,v 1.13.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tk.h" @@ -602,7 +602,7 @@ ConsoleCmd(clientData, interp, argc, argv) } else { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " eval command\"", (char *) NULL); - return TCL_ERROR; + result = TCL_ERROR; } } else { Tcl_AppendResult(interp, "bad option \"", argv[1], diff --git a/generic/tkDecls.h b/generic/tkDecls.h index 10b234a..4ae1169 100644 --- a/generic/tkDecls.h +++ b/generic/tkDecls.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkDecls.h,v 1.15.2.1 2002/02/05 02:25:14 wolfsuit Exp $ + * RCS: @(#) $Id: tkDecls.h,v 1.15.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #ifndef _TKDECLS @@ -843,6 +843,9 @@ EXTERN void Tk_SetInternalBorderEx _ANSI_ARGS_((Tk_Window tkwin, /* 244 */ EXTERN void Tk_SetMinimumRequestSize _ANSI_ARGS_(( Tk_Window tkwin, int minWidth, int minHeight)); +/* 245 */ +EXTERN void Tk_SetCaretPos _ANSI_ARGS_((Tk_Window tkwin, int x, + int y, int height)); typedef struct TkStubHooks { struct TkPlatStubs *tkPlatStubs; @@ -1100,6 +1103,7 @@ typedef struct TkStubs { void (*tk_SetClassProcs) _ANSI_ARGS_((Tk_Window tkwin, Tk_ClassProcs * procs, ClientData instanceData)); /* 242 */ void (*tk_SetInternalBorderEx) _ANSI_ARGS_((Tk_Window tkwin, int left, int right, int top, int bottom)); /* 243 */ void (*tk_SetMinimumRequestSize) _ANSI_ARGS_((Tk_Window tkwin, int minWidth, int minHeight)); /* 244 */ + void (*tk_SetCaretPos) _ANSI_ARGS_((Tk_Window tkwin, int x, int y, int height)); /* 245 */ } TkStubs; #ifdef __cplusplus @@ -2090,6 +2094,10 @@ extern TkStubs *tkStubsPtr; #define Tk_SetMinimumRequestSize \ (tkStubsPtr->tk_SetMinimumRequestSize) /* 244 */ #endif +#ifndef Tk_SetCaretPos +#define Tk_SetCaretPos \ + (tkStubsPtr->tk_SetCaretPos) /* 245 */ +#endif #endif /* defined(USE_TK_STUBS) && !defined(USE_TK_STUB_PROCS) */ diff --git a/generic/tkEntry.c b/generic/tkEntry.c index 46d2a56..8946513 100644 --- a/generic/tkEntry.c +++ b/generic/tkEntry.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkEntry.c,v 1.23.2.1 2002/02/05 02:25:14 wolfsuit Exp $ + * RCS: @(#) $Id: tkEntry.c,v 1.23.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkInt.h" @@ -694,7 +694,7 @@ static void EntrySetValue _ANSI_ARGS_((Entry *entryPtr, static void EntrySelectTo _ANSI_ARGS_(( Entry *entryPtr, int index)); static char * EntryTextVarProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, char *name1, char *name2, + Tcl_Interp *interp, char *name1, CONST char *name2, int flags)); static void EntryUpdateScrollbar _ANSI_ARGS_((Entry *entryPtr)); static int EntryValidate _ANSI_ARGS_((Entry *entryPtr, @@ -1894,23 +1894,26 @@ DisplayEntry(clientData) * cursor isn't on. Otherwise the selection would hide the cursor. */ - if ((entryPtr->insertPos >= entryPtr->leftIndex) - && (entryPtr->state == STATE_NORMAL) - && (entryPtr->flags & GOT_FOCUS)) { + if ((entryPtr->state == STATE_NORMAL) && (entryPtr->flags & GOT_FOCUS)) { Tk_CharBbox(entryPtr->textLayout, entryPtr->insertPos, &cursorX, NULL, NULL, NULL); - cursorX += entryPtr->layoutX; - cursorX -= (entryPtr->insertWidth)/2; - if (cursorX < xBound) { - if (entryPtr->flags & CURSOR_ON) { - Tk_Fill3DRectangle(tkwin, pixmap, entryPtr->insertBorder, - cursorX, baseY - fm.ascent, entryPtr->insertWidth, - fm.ascent + fm.descent, entryPtr->insertBorderWidth, - TK_RELIEF_RAISED); - } else if (entryPtr->insertBorder == entryPtr->selBorder) { - Tk_Fill3DRectangle(tkwin, pixmap, border, - cursorX, baseY - fm.ascent, entryPtr->insertWidth, - fm.ascent + fm.descent, 0, TK_RELIEF_FLAT); + Tk_SetCaretPos(entryPtr->tkwin, cursorX, baseY - fm.ascent, + fm.ascent + fm.descent); + if (entryPtr->insertPos >= entryPtr->leftIndex) { + cursorX += entryPtr->layoutX; + cursorX -= (entryPtr->insertWidth)/2; + if (cursorX < xBound) { + if (entryPtr->flags & CURSOR_ON) { + Tk_Fill3DRectangle(tkwin, pixmap, entryPtr->insertBorder, + cursorX, baseY - fm.ascent, entryPtr->insertWidth, + fm.ascent + fm.descent, + entryPtr->insertBorderWidth, + TK_RELIEF_RAISED); + } else if (entryPtr->insertBorder == entryPtr->selBorder) { + Tk_Fill3DRectangle(tkwin, pixmap, border, + cursorX, baseY - fm.ascent, entryPtr->insertWidth, + fm.ascent + fm.descent, 0, TK_RELIEF_FLAT); + } } } } @@ -3277,7 +3280,7 @@ EntryTextVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about button. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Not used. */ - char *name2; /* Not used. */ + CONST char *name2; /* Not used. */ int flags; /* Information about what happened. */ { Entry *entryPtr = (Entry *) clientData; diff --git a/generic/tkEvent.c b/generic/tkEvent.c index 366ba86..f0c6194 100644 --- a/generic/tkEvent.c +++ b/generic/tkEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkEvent.c,v 1.8 2000/06/03 08:58:16 hobbs Exp $ + * RCS: @(#) $Id: tkEvent.c,v 1.8.6.1 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkPort.h" @@ -749,18 +749,51 @@ Tk_HandleEvent(eventPtr) * Pass the event to the input method(s), if there are any, and * discard the event if the input method(s) insist. Create the * input context for the window if it hasn't already been done - * (XFilterEvent needs this context). + * (XFilterEvent needs this context). XIM is only ever enabled on + * Unix, but this hasn't been factored out of the generic code yet. */ - if (winPtr->dispPtr->useInputMethods) { - if (!(winPtr->flags & TK_CHECKED_IC)) { - if (winPtr->dispPtr->inputMethod != NULL) { - winPtr->inputContext = XCreateIC( - winPtr->dispPtr->inputMethod, XNInputStyle, - XIMPreeditNothing|XIMStatusNothing, - XNClientWindow, winPtr->window, - XNFocusWindow, winPtr->window, NULL); - } + dispPtr = winPtr->dispPtr; + if ((dispPtr->useInputMethods)) { + if (!(winPtr->flags & (TK_CHECKED_IC|TK_ALREADY_DEAD))) { winPtr->flags |= TK_CHECKED_IC; + if (dispPtr->inputMethod != NULL) { +#if TK_XIM_SPOT + XVaNestedList preedit_attr; + XPoint spot = {0, 0}; + + if (dispPtr->inputXfs == NULL) { + /* + * We only need to create one XFontSet + */ + char **missing_list; + int missing_count; + char *def_string; + + dispPtr->inputXfs = XCreateFontSet(dispPtr->display, + "-*-*-*-R-Normal--14-130-75-75-*-*", + &missing_list, &missing_count, &def_string); + if (missing_count > 0) { + XFreeStringList(missing_list); + } + } + + preedit_attr = XVaCreateNestedList(0, XNSpotLocation, &spot, + XNFontSet, dispPtr->inputXfs, NULL); + winPtr->inputContext = XCreateIC(dispPtr->inputMethod, + XNInputStyle, XIMPreeditPosition | XIMStatusNothing, + XNClientWindow, winPtr->window, + XNFocusWindow, winPtr->window, + XNPreeditAttributes, preedit_attr, + NULL); + XFree(preedit_attr); +#else + winPtr->inputContext = XCreateIC(dispPtr->inputMethod, + XNInputStyle, XIMPreeditNothing | XIMStatusNothing, + XNClientWindow, winPtr->window, + XNFocusWindow, winPtr->window, + NULL); +#endif + } } if (XFilterEvent(eventPtr, None)) { goto done; diff --git a/generic/tkFocus.c b/generic/tkFocus.c index 063c4d7..82b2fa7 100644 --- a/generic/tkFocus.c +++ b/generic/tkFocus.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkFocus.c,v 1.5.16.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkFocus.c,v 1.5.16.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkInt.h" @@ -1012,3 +1012,39 @@ FindDisplayFocusInfo(mainPtr, dispPtr) mainPtr->displayFocusPtr = displayFocusPtr; return displayFocusPtr; } + +/* + *---------------------------------------------------------------------- + * + * TkFocusFree -- + * + * Free resources associated with maintaining the focus. + * + * Results: + * None. + * + * Side effects: + * This mainPtr should no long access focus information. + * + *---------------------------------------------------------------------- + */ + +void +TkFocusFree(mainPtr) + TkMainInfo *mainPtr; /* Record that identifies a particular + * application. */ +{ + DisplayFocusInfo *displayFocusPtr; + ToplevelFocusInfo *tlFocusPtr; + + while (mainPtr->displayFocusPtr != NULL) { + displayFocusPtr = mainPtr->displayFocusPtr; + mainPtr->displayFocusPtr = mainPtr->displayFocusPtr->nextPtr; + ckfree((char *) displayFocusPtr); + } + while (mainPtr->tlFocusPtr != NULL) { + tlFocusPtr = mainPtr->tlFocusPtr; + mainPtr->tlFocusPtr = mainPtr->tlFocusPtr->nextPtr; + ckfree((char *) tlFocusPtr); + } +} diff --git a/generic/tkFrame.c b/generic/tkFrame.c index 4d37f0b..72f58f6 100644 --- a/generic/tkFrame.c +++ b/generic/tkFrame.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkFrame.c,v 1.10.2.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkFrame.c,v 1.10.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "default.h" @@ -920,7 +920,7 @@ ConfigureFrame(interp, framePtr, objc, objv) { Tk_SavedOptions savedOptions; char *oldMenuName; - Tk_Window oldWindow; + Tk_Window oldWindow = NULL; Labelframe *labelframePtr = (Labelframe *) framePtr; /* diff --git a/generic/tkGC.c b/generic/tkGC.c index b719137..b6c420d 100644 --- a/generic/tkGC.c +++ b/generic/tkGC.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkGC.c,v 1.3 1999/04/16 01:51:14 stanton Exp $ + * RCS: @(#) $Id: tkGC.c,v 1.3.18.1 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkPort.h" @@ -84,7 +84,7 @@ Tk_GetGC(tkwin, valueMask, valuePtr) Drawable d, freeDrawable; TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr; - if (!dispPtr->gcInit) { + if (dispPtr->gcInit <= 0) { GCInit(dispPtr); } @@ -300,6 +300,14 @@ Tk_FreeGC(display, gc) if (!dispPtr->gcInit) { panic("Tk_FreeGC called before Tk_GetGC"); } + if (dispPtr->gcInit < 0) { + /* + * The GCCleanup has been called, and remaining GCs have been + * freed. This may still get called by other things shutting + * down, but the GCs should no longer be in use. + */ + return; + } idHashPtr = Tcl_FindHashEntry(&dispPtr->gcIdTable, (char *) gc); if (idHashPtr == NULL) { @@ -319,6 +327,51 @@ Tk_FreeGC(display, gc) /* *---------------------------------------------------------------------- * + * TkGCCleanup -- + * + * Frees the structures used for GC management. + * We need to have it called near the end, when other cleanup that + * calls Tk_FreeGC is all done. + * + * Results: + * None. + * + * Side effects: + * GC resources are freed. + * + *---------------------------------------------------------------------- + */ + +void +TkGCCleanup(dispPtr) + TkDisplay *dispPtr; /* display to clean up resources in */ +{ + Tcl_HashEntry *entryPtr; + Tcl_HashSearch search; + TkGC *gcPtr; + + for (entryPtr = Tcl_FirstHashEntry(&dispPtr->gcIdTable, &search); + entryPtr != NULL; + entryPtr = Tcl_NextHashEntry(&search)) { + gcPtr = (TkGC *) Tcl_GetHashValue(entryPtr); + /* + * This call is not needed, as it is only used on Unix to restore + * the Id to the stack pool, and we don't want to use them anymore. + * Tk_FreeXId(gcPtr->display, (XID) XGContextFromGC(gcPtr->gc)); + */ + XFreeGC(gcPtr->display, gcPtr->gc); + Tcl_DeleteHashEntry(gcPtr->valueHashPtr); + Tcl_DeleteHashEntry(entryPtr); + ckfree((char *) gcPtr); + } + Tcl_DeleteHashTable(&dispPtr->gcValueTable); + Tcl_DeleteHashTable(&dispPtr->gcIdTable); + dispPtr->gcInit = -1; +} + +/* + *---------------------------------------------------------------------- + * * GCInit -- * * Initialize the structures used for GC management. @@ -336,6 +389,9 @@ static void GCInit(dispPtr) TkDisplay *dispPtr; { + if (dispPtr->gcInit < 0) { + panic("called GCInit after GCCleanup"); + } dispPtr->gcInit = 1; Tcl_InitHashTable(&dispPtr->gcValueTable, sizeof(ValueKey)/sizeof(int)); Tcl_InitHashTable(&dispPtr->gcIdTable, TCL_ONE_WORD_KEYS); diff --git a/generic/tkGet.c b/generic/tkGet.c index a3b6677..b0897c0 100644 --- a/generic/tkGet.c +++ b/generic/tkGet.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkGet.c,v 1.6.8.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkGet.c,v 1.6.8.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkInt.h" @@ -32,6 +32,8 @@ typedef struct ThreadSpecificData { } ThreadSpecificData; static Tcl_ThreadDataKey dataKey; +static void FreeUidThreadExitProc _ANSI_ARGS_((ClientData clientData)); + /* * The following tables defines the string values for reliefs, which are * used by Tk_GetAnchorFromObj and Tk_GetJustifyFromObj. @@ -484,6 +486,32 @@ Tk_NameOfJustify(justify) /* *---------------------------------------------------------------------- * + * FreeUidThreadExitProc -- + * + * Cleans up memory used for Tk_Uids in the thread. + * + * Results: + * None. + * + * Side effects: + * All information in the identifier table is deleted. + * + *---------------------------------------------------------------------- + */ + +static void +FreeUidThreadExitProc(clientData) + ClientData clientData; /* Not used. */ +{ + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) + Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + Tcl_DeleteHashTable(&tsdPtr->uidTable); + tsdPtr->initialized = 0; +} + +/* + *---------------------------------------------------------------------- + * * Tk_GetUid -- * * Given a string, this procedure returns a unique identifier @@ -515,6 +543,7 @@ Tk_GetUid(string) if (!tsdPtr->initialized) { Tcl_InitHashTable(tablePtr, TCL_STRING_KEYS); + Tcl_CreateThreadExitHandler(FreeUidThreadExitProc, NULL); tsdPtr->initialized = 1; } return (Tk_Uid) Tcl_GetHashKey(tablePtr, diff --git a/generic/tkImgGIF.c b/generic/tkImgGIF.c index 089aacb..53afcbb 100644 --- a/generic/tkImgGIF.c +++ b/generic/tkImgGIF.c @@ -19,17 +19,17 @@ * This file also contains code from the giftoppm program, which is * copyrighted as follows: * - * +-------------------------------------------------------------------+ - * | Copyright 1990, David Koblas. | - * | 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 software is | - * | provided "as is" without express or implied warranty. | + * +--------------------------------------------------------------------+ + * | Copyright 1990, David Koblas. | + * | 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 software is | + * | provided "as is" without express or implied warranty. | * +-------------------------------------------------------------------+ * - * RCS: @(#) $Id: tkImgGIF.c,v 1.18.2.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkImgGIF.c,v 1.18.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ /* @@ -41,7 +41,7 @@ * Any other invalid character is treated as an EOF */ -#define GIF_SPECIAL (256) +#define GIF_SPECIAL (256) #define GIF_PAD (GIF_SPECIAL+1) #define GIF_SPACE (GIF_SPECIAL+2) #define GIF_BAD (GIF_SPECIAL+3) @@ -72,13 +72,15 @@ typedef struct mFile { * encoding independant. */ -static CONST char GIF87a[] = - { 0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x00 }; /* ASCII GIF87a */ -static CONST char GIF89a[] = - { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x00 }; /* ASCII GIF89a */ -# define GIF_TERMINATOR 0x3b /* ASCII ; */ -# define GIF_EXTENSION 0x21 /* ASCII ! */ -# define GIF_START 0x2c /* ASCII , */ +static CONST char GIF87a[] = { /* ASCII GIF87a */ + 0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x00 +}; +static CONST char GIF89a[] = { /* ASCII GIF89a */ + 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x00 +}; +# define GIF_TERMINATOR 0x3b /* ASCII ; */ +# define GIF_EXTENSION 0x21 /* ASCII ! */ +# define GIF_START 0x2c /* ASCII , */ /* * HACK ALERT!! HACK ALERT!! HACK ALERT!! @@ -96,10 +98,10 @@ static Tcl_ThreadDataKey dataKey; * The format record for the GIF file format: */ -static int FileMatchGIF _ANSI_ARGS_((Tcl_Channel chan, CONST char *fileName, +static int FileMatchGIF _ANSI_ARGS_((Tcl_Channel chan, CONST char *fileName, Tcl_Obj *format, int *widthPtr, int *heightPtr, Tcl_Interp *interp)); -static int FileReadGIF _ANSI_ARGS_((Tcl_Interp *interp, +static int FileReadGIF _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Channel chan, CONST char *fileName, Tcl_Obj *format, Tk_PhotoHandle imageHandle, int destX, int destY, int width, int height, int srcX, int srcY)); @@ -118,13 +120,13 @@ static int CommonWriteGIF _ANSI_ARGS_((Tcl_Interp *interp, Tk_PhotoImageBlock *blockPtr)); Tk_PhotoImageFormat tkImgFmtGIF = { - "gif", /* name */ - FileMatchGIF, /* fileMatchProc */ - StringMatchGIF, /* stringMatchProc */ - FileReadGIF, /* fileReadProc */ - StringReadGIF, /* stringReadProc */ - FileWriteGIF, /* fileWriteProc */ - NULL, /* stringWriteProc */ + "gif", /* name */ + FileMatchGIF, /* fileMatchProc */ + StringMatchGIF, /* stringMatchProc */ + FileReadGIF, /* fileReadProc */ + StringReadGIF, /* stringReadProc */ + FileWriteGIF, /* fileWriteProc */ + NULL, /* stringWriteProc */ }; #define INTERLACE 0x40 @@ -136,7 +138,7 @@ Tk_PhotoImageFormat tkImgFmtGIF = { #define CM_BLUE 2 #define CM_ALPHA 3 #define MAX_LWZ_BITS 12 -#define LM_to_uint(a,b) (((b)<<8)|(a)) +#define LM_to_uint(a,b) (((b)<<8)|(a)) #define ReadOK(file,buffer,len) (Fread(buffer, len, 1, file) != 0) /* @@ -288,7 +290,7 @@ FileReadGIF(interp, chan, fileName, format, imageHandle, destX, destY, } bitPixel = 2<<(buf[0]&0x07); - if (BitSet(buf[0], LOCALCOLORMAP)) { /* Global Colormap */ + if (BitSet(buf[0], LOCALCOLORMAP)) { /* Global Colormap */ if (!ReadColorMap(chan, bitPixel, colorMap)) { Tcl_AppendResult(interp, "error reading color map", (char *) NULL); @@ -378,7 +380,9 @@ FileReadGIF(interp, chan, fileName, format, imageHandle, destX, destY, bitPixel = 1<<((buf[8]&0x07)+1); if (index--) { - /* this is not the image we want to read: skip it. */ + /* + * This is not the image we want to read: skip it. + */ if (BitSet(buf[8], LOCALCOLORMAP)) { if (!ReadColorMap(chan, bitPixel, colorMap)) { Tcl_AppendResult(interp, @@ -387,7 +391,9 @@ FileReadGIF(interp, chan, fileName, format, imageHandle, destX, destY, } } - /* If we've not yet allocated a trash buffer, do so now */ + /* + * If we've not yet allocated a trash buffer, do so now. + */ if (trashBuffer == NULL) { nBytes = fileWidth * fileHeight * 3; trashBuffer = @@ -395,28 +401,32 @@ FileReadGIF(interp, chan, fileName, format, imageHandle, destX, destY, } /* - * Slurp! Process the data for this image and stuff it in a - * trash buffer. + * Slurp! Process the data for this image and stuff it in + * a trash buffer. * - * Yes, it might be more efficient here to *not* store the data - * (we're just going to throw it away later). However, I elected - * to implement it this way for good reasons. First, I wanted to - * avoid duplicating the (fairly complex) LWZ decoder in ReadImage. - * Fine, you say, why didn't you just modify it to allow the use of - * a NULL specifier for the output buffer? I tried that, but it - * negatively impacted the performance of what I think will be the - * common case: reading the first image in the file. Rather than - * marginally improve the speed of the less frequent case, I chose - * to maintain high performance for the common case. + * Yes, it might be more efficient here to *not* store the + * data (we're just going to throw it away later). + * However, I elected to implement it this way for good + * reasons. First, I wanted to avoid duplicating the + * (fairly complex) LWZ decoder in ReadImage. Fine, you + * say, why didn't you just modify it to allow the use of + * a NULL specifier for the output buffer? I tried that, + * but it negatively impacted the performance of what I + * think will be the common case: reading the first image + * in the file. Rather than marginally improve the speed + * of the less frequent case, I chose to maintain high + * performance for the common case. */ if (ReadImage(interp, (char *) trashBuffer, chan, fileWidth, - fileHeight, colorMap, 0, 0, 0, 0, 0, -1) != TCL_OK) { - goto error; + fileHeight, colorMap, 0, 0, 0, 0, 0, -1) != TCL_OK) { + goto error; } continue; } - /* If a trash buffer has been allocated, free it now */ + /* + * If a trash buffer has been allocated, free it now. + */ if (trashBuffer != NULL) { ckfree((char *)trashBuffer); trashBuffer = NULL; @@ -520,25 +530,31 @@ StringMatchGIF(dataObj, format, widthPtr, heightPtr, interp) data = Tcl_GetByteArrayFromObj(dataObj, &length); - /* Header is a minimum of 10 bytes */ + /* + * Header is a minimum of 10 bytes. + */ if (length < 10) { - return 0; + return 0; } - /* Check whether the data is Base64 encoded */ + /* + * Check whether the data is Base64 encoded. + */ if ((strncmp(GIF87a, (char *) data, 6) != 0) && - (strncmp(GIF89a, (char *) data, 6) != 0)) { - /* Try interpreting the data as Base64 encoded */ - mInit((unsigned char *) data, &handle); - got = Mread(header, 10, 1, &handle); - if (got != 10 - || ((strncmp(GIF87a, (char *) header, 6) != 0) - && (strncmp(GIF89a, (char *) header, 6) != 0))) { - return 0; - } + (strncmp(GIF89a, (char *) data, 6) != 0)) { + /* + * Try interpreting the data as Base64 encoded + */ + mInit((unsigned char *) data, &handle); + got = Mread(header, 10, 1, &handle); + if (got != 10 + || ((strncmp(GIF87a, (char *) header, 6) != 0) + && (strncmp(GIF89a, (char *) header, 6) != 0))) { + return 0; + } } else { - memcpy((VOID *) header, (VOID *) data, 10); + memcpy((VOID *) header, (VOID *) data, 10); } *widthPtr = LM_to_uint(header[6],header[7]); *heightPtr = LM_to_uint(header[8],header[9]); @@ -574,13 +590,13 @@ StringReadGIF(interp, dataObj, format, imageHandle, Tcl_Obj *format; /* format object, or NULL */ Tk_PhotoHandle imageHandle; /* the image to write this data into */ int destX, destY; /* The rectangular region of the */ - int width, height; /* image to copy */ + int width, height; /* image to copy */ int srcX, srcY; { int result; MFile handle; ThreadSpecificData *tsdPtr = (ThreadSpecificData *) - Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); Tcl_Channel dataSrc; char *data; @@ -588,8 +604,7 @@ StringReadGIF(interp, dataObj, format, imageHandle, * Check whether the data is Base64 encoded */ data = (char *) Tcl_GetByteArrayFromObj(dataObj, NULL); - if ((strncmp(GIF87a, data, 6) != 0) && - (strncmp(GIF89a, data, 6) != 0)) { + if ((strncmp(GIF87a, data, 6) != 0) && (strncmp(GIF89a, data, 6) != 0)) { mInit((unsigned char *)data, &handle); tsdPtr->fromData = 1; dataSrc = (Tcl_Channel) &handle; @@ -601,7 +616,7 @@ StringReadGIF(interp, dataObj, format, imageHandle, result = FileReadGIF(interp, dataSrc, "inline data", format, imageHandle, destX, destY, width, height, srcX, srcY); tsdPtr->fromData = 0; - return(result); + return result; } /* @@ -656,65 +671,65 @@ ReadGIFHeader(chan, widthPtr, heightPtr) static int ReadColorMap(chan, number, buffer) - Tcl_Channel chan; - int number; - unsigned char buffer[MAXCOLORMAPSIZE][4]; + Tcl_Channel chan; + int number; + unsigned char buffer[MAXCOLORMAPSIZE][4]; { - int i; - unsigned char rgb[3]; + int i; + unsigned char rgb[3]; - for (i = 0; i < number; ++i) { - if (! ReadOK(chan, rgb, sizeof(rgb))) { - return 0; - } - - if (buffer) { - buffer[i][CM_RED] = rgb[0] ; - buffer[i][CM_GREEN] = rgb[1] ; - buffer[i][CM_BLUE] = rgb[2] ; - buffer[i][CM_ALPHA] = 255 ; - } + for (i = 0; i < number; ++i) { + if (! ReadOK(chan, rgb, sizeof(rgb))) { + return 0; + } + + if (buffer) { + buffer[i][CM_RED] = rgb[0] ; + buffer[i][CM_GREEN] = rgb[1] ; + buffer[i][CM_BLUE] = rgb[2] ; + buffer[i][CM_ALPHA] = 255 ; } - return 1; + } + return 1; } static int DoExtension(chan, label, transparent) - Tcl_Channel chan; - int label; - int *transparent; + Tcl_Channel chan; + int label; + int *transparent; { static unsigned char buf[256]; int count; switch (label) { - case 0x01: /* Plain Text Extension */ - break; - - case 0xff: /* Application Extension */ - break; + case 0x01: /* Plain Text Extension */ + break; - case 0xfe: /* Comment Extension */ - do { - count = GetDataBlock(chan, (unsigned char*) buf); - } while (count > 0); - return count; + case 0xff: /* Application Extension */ + break; - case 0xf9: /* Graphic Control Extension */ + case 0xfe: /* Comment Extension */ + do { count = GetDataBlock(chan, (unsigned char*) buf); - if (count < 0) { - return 1; - } - if ((buf[0] & 0x1) != 0) { - *transparent = buf[3]; - } + } while (count > 0); + return count; + + case 0xf9: /* Graphic Control Extension */ + count = GetDataBlock(chan, (unsigned char*) buf); + if (count < 0) { + return 1; + } + if ((buf[0] & 0x1) != 0) { + *transparent = buf[3]; + } - do { - count = GetDataBlock(chan, (unsigned char*) buf); - } while (count > 0); - return count; + do { + count = GetDataBlock(chan, (unsigned char*) buf); + } while (count > 0); + return count; } do { @@ -727,8 +742,8 @@ static int ZeroDataBlock = 0; static int GetDataBlock(chan, buf) - Tcl_Channel chan; - unsigned char *buf; + Tcl_Channel chan; + unsigned char *buf; { unsigned char count; @@ -753,17 +768,17 @@ GetDataBlock(chan, buf) * ReadImage -- * * Process a GIF image from a given source, with a given height, - * width, transparency, etc. + * width, transparency, etc. * - * This code is based on the code found in the ImageMagick GIF decoder, - * which is (c) 2000 ImageMagick Studio. + * This code is based on the code found in the ImageMagick GIF decoder, + * which is (c) 2000 ImageMagick Studio. * - * Some thoughts on our implementation: - * It sure would be nice if ReadImage didn't take 11 parameters! I think - * that if we were smarter, we could avoid doing that. + * Some thoughts on our implementation: + * It sure would be nice if ReadImage didn't take 11 parameters! I think + * that if we were smarter, we could avoid doing that. * - * Possible further optimizations: we could pull the GetCode function - * directly into ReadImage, which would improve our speed. + * Possible further optimizations: we could pull the GetCode function + * directly into ReadImage, which would improve our speed. * * Results: * Processes a GIF image and loads the pixel data into a memory array. @@ -777,15 +792,15 @@ GetDataBlock(chan, buf) static int ReadImage(interp, imagePtr, chan, len, rows, cmap, width, height, srcX, srcY, interlace, transparent) - Tcl_Interp *interp; - char *imagePtr; - Tcl_Channel chan; - int len, rows; - unsigned char cmap[MAXCOLORMAPSIZE][4]; - int width, height; - int srcX, srcY; - int interlace; - int transparent; + Tcl_Interp *interp; + char *imagePtr; + Tcl_Channel chan; + int len, rows; + unsigned char cmap[MAXCOLORMAPSIZE][4]; + int width, height; + int srcX, srcY; + int interlace; + int transparent; { unsigned char initialCodeSize; int v; @@ -797,9 +812,9 @@ ReadImage(interp, imagePtr, chan, len, rows, cmap, unsigned char append[(1 << MAX_LWZ_BITS)]; unsigned char stack[(1 << MAX_LWZ_BITS)*2]; register unsigned char *top; - int codeSize, clearCode, inCode, endCode, oldCode, maxCode, - code, firstCode; - + int codeSize, clearCode, inCode, endCode, oldCode, maxCode; + int code, firstCode; + /* * Initialize the decoder */ @@ -808,7 +823,7 @@ ReadImage(interp, imagePtr, chan, len, rows, cmap, Tcl_PosixError(interp), (char *) NULL); return TCL_ERROR; } - if (transparent!=-1) { + if (transparent != -1) { cmap[transparent][CM_RED] = 0; cmap[transparent][CM_GREEN] = 0; cmap[transparent][CM_BLUE] = 0; @@ -817,19 +832,21 @@ ReadImage(interp, imagePtr, chan, len, rows, cmap, pixelPtr = imagePtr; - /* Initialize the decoder */ - /* Set values for "special" numbers: + /* + * Initialize the decoder. + * + * Set values for "special" numbers: * clear code reset the decoder * end code stop decoding * code size size of the next code to retrieve * max code next available table position */ - clearCode = 1 << (int) initialCodeSize; - endCode = clearCode + 1; - codeSize = (int) initialCodeSize + 1; - maxCode = clearCode + 2; - oldCode = -1; - firstCode = -1; + clearCode = 1 << (int) initialCodeSize; + endCode = clearCode + 1; + codeSize = (int) initialCodeSize + 1; + maxCode = clearCode + 2; + oldCode = -1; + firstCode = -1; memset((void *)prefix, 0, (1 << MAX_LWZ_BITS) * sizeof(short)); memset((void *)append, 0, (1 << MAX_LWZ_BITS) * sizeof(char)); @@ -840,12 +857,16 @@ ReadImage(interp, imagePtr, chan, len, rows, cmap, GetCode(chan, 0, 1); - /* Read until we finish the image */ + /* + * Read until we finish the image + */ for (i = 0, ypos = 0; i < rows; i++) { for (xpos = 0; xpos < len; ) { if (top == stack) { - /* Bummer -- our stack is empty. Now we have to work! */ + /* + * Bummer -- our stack is empty. Now we have to work! + */ code = GetCode(chan, codeSize, 0); if (code < 0) { return TCL_OK; @@ -864,10 +885,12 @@ ReadImage(interp, imagePtr, chan, len, rows, cmap, } if (code == clearCode) { - /* Reset the decoder */ - codeSize = initialCodeSize + 1; - maxCode = clearCode + 2; - oldCode = -1; + /* + * Reset the decoder. + */ + codeSize = initialCodeSize + 1; + maxCode = clearCode + 2; + oldCode = -1; continue; } @@ -880,7 +903,7 @@ ReadImage(interp, imagePtr, chan, len, rows, cmap, * roll this into the clearCode test above, because * at that point we have not yet read the next code. */ - *top++=append[code]; + *top++ = append[code]; oldCode = code; firstCode = code; continue; @@ -916,15 +939,20 @@ ReadImage(interp, imagePtr, chan, len, rows, cmap, return TCL_OK; } - /* Push the head of the string onto the stack */ + /* + * Push the head of the string onto the stack. + */ *top++ = firstCode; - /* Add a new string to the string table */ + /* + * Add a new string to the string table + */ prefix[maxCode] = oldCode; append[maxCode] = firstCode; maxCode++; - /* maxCode tells us the maximum code value we can accept. + /* + * maxCode tells us the maximum code value we can accept. * If we see that we need more bits to represent it than * we are requesting from the unpacker, we need to increase * the number we ask for. @@ -936,7 +964,9 @@ ReadImage(interp, imagePtr, chan, len, rows, cmap, oldCode = inCode; } - /* Pop the next color index off the stack */ + /* + * Pop the next color index off the stack. + */ v = *(--top); if (v < 0) { return TCL_OK; @@ -957,7 +987,9 @@ ReadImage(interp, imagePtr, chan, len, rows, cmap, } - /* If interlacing, the next ypos is not just +1 */ + /* + * If interlacing, the next ypos is not just +1 + */ if (interlace) { ypos += interlaceStep[pass]; while (ypos >= height) { @@ -981,23 +1013,23 @@ ReadImage(interp, imagePtr, chan, len, rows, cmap, * * GetCode -- * - * Extract the next compression code from the file. In GIF's, the - * compression codes are between 3 and 12 bits long and are then - * packed into 8 bit bytes, left to right, for example: - * bbbaaaaa - * dcccccbb - * eeeedddd - * ... - * We use a byte buffer read from the file and a sliding window - * to unpack the bytes. Thanks to ImageMagick for the sliding window - * idea. - * args: chan the channel to read from - * code_size size of the code to extract - * flag boolean indicating whether the extractor - * should be reset or not + * Extract the next compression code from the file. In GIF's, the + * compression codes are between 3 and 12 bits long and are then + * packed into 8 bit bytes, left to right, for example: + * bbbaaaaa + * dcccccbb + * eeeedddd + * ... + * We use a byte buffer read from the file and a sliding window + * to unpack the bytes. Thanks to ImageMagick for the sliding window + * idea. + * args: chan the channel to read from + * code_size size of the code to extract + * flag boolean indicating whether the extractor + * should be reset or not * * Results: - * code the next compression code + * code the next compression code * * Side effects: * May consume more input from chan. @@ -1007,9 +1039,9 @@ ReadImage(interp, imagePtr, chan, len, rows, cmap, static int GetCode(chan, code_size, flag) - Tcl_Channel chan; - int code_size; - int flag; + Tcl_Channel chan; + int code_size; + int flag; { static unsigned char buf[280]; static int bytes = 0, done; @@ -1020,7 +1052,9 @@ GetCode(chan, code_size, flag) int ret; if (flag) { - /* Initialize the decoder */ + /* + * Initialize the decoder. + */ bitsInWindow = 0; bytes = 0; window = 0; @@ -1030,12 +1064,16 @@ GetCode(chan, code_size, flag) } while (bitsInWindow < code_size) { - /* Not enough bits in our window to cover the request */ + /* + * Not enough bits in our window to cover the request. + */ if (done) { return -1; } if (bytes == 0) { - /* Not enough bytes in our buffer to add to the window */ + /* + * Not enough bytes in our buffer to add to the window. + */ bytes = GetDataBlock(chan, buf); c = buf; if (bytes <= 0) { @@ -1043,7 +1081,9 @@ GetCode(chan, code_size, flag) break; } } - /* Tack another byte onto the window, see if that's enough */ + /* + * Tack another byte onto the window, see if that's enough. + */ window += (*c) << bitsInWindow; c++; bitsInWindow += 8; @@ -1051,10 +1091,14 @@ GetCode(chan, code_size, flag) } - /* The next code will always be the last code_size bits of the window */ + /* + * The next code will always be the last code_size bits of the window. + */ ret = window & ((1 << code_size) - 1); - /* Shift data in the window to put the next code at the end */ + /* + * Shift data in the window to put the next code at the end. + */ window >>= code_size; bitsInWindow -= code_size; return ret; @@ -1144,20 +1188,20 @@ Mread(dst, chunkSize, numChunks, handle) static int Mgetc(handle) - MFile *handle; /* Handle containing decoder data and state. */ + MFile *handle; /* Handle containing decoder data and state */ { int c; int result = 0; /* Initialization needed only to prevent * gcc compiler warning. */ - + if (handle->state == GIF_DONE) { - return(GIF_DONE); + return GIF_DONE; } do { c = char64(*handle->data); handle->data++; - } while (c==GIF_SPACE); + } while (c == GIF_SPACE); if (c>GIF_SPECIAL) { handle->state = GIF_DONE; @@ -1165,24 +1209,24 @@ Mgetc(handle) } switch (handle->state++) { - case 0: - handle->c = c<<2; - result = Mgetc(handle); - break; - case 1: - result = handle->c | (c>>4); - handle->c = (c&0xF)<<4; - break; - case 2: - result = handle->c | (c>>2); - handle->c = (c&0x3) << 6; - break; - case 3: - result = handle->c | c; - handle->state = 0; - break; - } - return(result); + case 0: + handle->c = c<<2; + result = Mgetc(handle); + break; + case 1: + result = handle->c | (c>>4); + handle->c = (c&0xF)<<4; + break; + case 2: + result = handle->c | (c>>2); + handle->c = (c&0x3) << 6; + break; + case 3: + result = handle->c | c; + handle->state = 0; + break; + } + return result; } /* @@ -1207,33 +1251,37 @@ char64(c) int c; { switch(c) { - case 'A': return(0); case 'B': return(1); case 'C': return(2); - case 'D': return(3); case 'E': return(4); case 'F': return(5); - case 'G': return(6); case 'H': return(7); case 'I': return(8); - case 'J': return(9); case 'K': return(10); case 'L': return(11); - case 'M': return(12); case 'N': return(13); case 'O': return(14); - case 'P': return(15); case 'Q': return(16); case 'R': return(17); - case 'S': return(18); case 'T': return(19); case 'U': return(20); - case 'V': return(21); case 'W': return(22); case 'X': return(23); - case 'Y': return(24); case 'Z': return(25); case 'a': return(26); - case 'b': return(27); case 'c': return(28); case 'd': return(29); - case 'e': return(30); case 'f': return(31); case 'g': return(32); - case 'h': return(33); case 'i': return(34); case 'j': return(35); - case 'k': return(36); case 'l': return(37); case 'm': return(38); - case 'n': return(39); case 'o': return(40); case 'p': return(41); - case 'q': return(42); case 'r': return(43); case 's': return(44); - case 't': return(45); case 'u': return(46); case 'v': return(47); - case 'w': return(48); case 'x': return(49); case 'y': return(50); - case 'z': return(51); case '0': return(52); case '1': return(53); - case '2': return(54); case '3': return(55); case '4': return(56); - case '5': return(57); case '6': return(58); case '7': return(59); - case '8': return(60); case '9': return(61); case '+': return(62); - case '/': return(63); - - case ' ': case '\t': case '\n': case '\r': case '\f': return(GIF_SPACE); - case '=': return(GIF_PAD); - case '\0': return(GIF_DONE); - default: return(GIF_BAD); + case 'A': return 0; case 'B': return 1; case 'C': return 2; + case 'D': return 3; case 'E': return 4; case 'F': return 5; + case 'G': return 6; case 'H': return 7; case 'I': return 8; + case 'J': return 9; case 'K': return 10; case 'L': return 11; + case 'M': return 12; case 'N': return 13; case 'O': return 14; + case 'P': return 15; case 'Q': return 16; case 'R': return 17; + case 'S': return 18; case 'T': return 19; case 'U': return 20; + case 'V': return 21; case 'W': return 22; case 'X': return 23; + case 'Y': return 24; case 'Z': return 25; case 'a': return 26; + case 'b': return 27; case 'c': return 28; case 'd': return 29; + case 'e': return 30; case 'f': return 31; case 'g': return 32; + case 'h': return 33; case 'i': return 34; case 'j': return 35; + case 'k': return 36; case 'l': return 37; case 'm': return 38; + case 'n': return 39; case 'o': return 40; case 'p': return 41; + case 'q': return 42; case 'r': return 43; case 's': return 44; + case 't': return 45; case 'u': return 46; case 'v': return 47; + case 'w': return 48; case 'x': return 49; case 'y': return 50; + case 'z': return 51; case '0': return 52; case '1': return 53; + case '2': return 54; case '3': return 55; case '4': return 56; + case '5': return 57; case '6': return 58; case '7': return 59; + case '8': return 60; case '9': return 61; case '+': return 62; + case '/': return 63; + + case ' ': case '\t': case '\n': case '\r': case '\f': + return GIF_SPACE; + case '=': + return GIF_PAD; + case '\0': + return GIF_DONE; + default: + return GIF_BAD; } } @@ -1257,18 +1305,18 @@ Fread(dst, hunk, count, chan) Tcl_Channel chan; { ThreadSpecificData *tsdPtr = (ThreadSpecificData *) - Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); MFile *handle; switch (tsdPtr->fromData) { - case 1: - return(Mread(dst, hunk, count, (MFile *) chan)); - case 2: + case 1: + return Mread(dst, hunk, count, (MFile *) chan); + case 2: handle = (MFile *) chan; memcpy((VOID *)dst, (VOID *) handle->data, (size_t) (hunk * count)); handle->data += hunk * count; - return((int) (hunk * count)); - default: + return (int)(hunk * count); + default: return Tcl_Read(chan, (char *) dst, (int) (hunk * count)); } } @@ -1277,13 +1325,13 @@ Fread(dst, hunk, count, chan) /* * ChanWriteGIF - writes a image in GIF format. *------------------------------------------------------------------------- - * Author: Lolo - * Engeneering Projects Area - * Department of Mining - * University of Oviedo + * Author: Lolo + * Engeneering Projects Area + * Department of Mining + * University of Oviedo * e-mail zz11425958@zeus.etsimo.uniovi.es - * lolo@pcsig22.etsimo.uniovi.es - * Date: Fri September 20 1996 + * lolo@pcsig22.etsimo.uniovi.es + * Date: Fri September 20 1996 * * Modified for transparency handling (gif89a) and miGIF compression * by Jan Nijtmans <j.nijtmans@chello.nl> @@ -1307,11 +1355,11 @@ Fread(dst, hunk, count, chan) typedef int (* ifunptr) _ANSI_ARGS_((void)); -#define LSB(a) ((unsigned char) (((short)(a)) & 0x00FF)) -#define MSB(a) ((unsigned char) (((short)(a)) >> 8)) +#define LSB(a) ((unsigned char) (((short)(a)) & 0x00FF)) +#define MSB(a) ((unsigned char) (((short)(a)) >> 8)) #define GIFBITS 12 -#define HSIZE 5003 /* 80% occupancy */ +#define HSIZE 5003 /* 80% occupancy */ static int ssize; static int csize; @@ -1340,7 +1388,7 @@ static void savemap _ANSI_ARGS_((Tk_PhotoImageBlock *blockPtr, static int ReadValue _ANSI_ARGS_((void)); static int -FileWriteGIF (interp, filename, format, blockPtr) +FileWriteGIF(interp, filename, format, blockPtr) Tcl_Interp *interp; /* Interpreter to use for reporting errors. */ CONST char *filename; Tcl_Obj *format; @@ -1383,9 +1431,9 @@ CommonWriteGIF(interp, handle, format, blockPtr) top = 0; left = 0; - pixelSize=blockPtr->pixelSize; - greenOffset=blockPtr->offset[1]-blockPtr->offset[0]; - blueOffset=blockPtr->offset[2]-blockPtr->offset[0]; + pixelSize = blockPtr->pixelSize; + greenOffset = blockPtr->offset[1]-blockPtr->offset[0]; + blueOffset = blockPtr->offset[2]-blockPtr->offset[0]; alphaOffset = blockPtr->offset[0]; if (alphaOffset < blockPtr->offset[2]) { alphaOffset = blockPtr->offset[2]; @@ -1398,30 +1446,32 @@ CommonWriteGIF(interp, handle, format, blockPtr) Tcl_Write(handle, (char *) (alphaOffset ? GIF89a : GIF87a), 6); - for (x=0;x<MAXCOLORMAPSIZE;x++) { + for (x=0 ; x<MAXCOLORMAPSIZE ; x++) { mapa[x][CM_RED] = 255; mapa[x][CM_GREEN] = 255; mapa[x][CM_BLUE] = 255; } - width=blockPtr->width; - height=blockPtr->height; - pixelo=blockPtr->pixelPtr + blockPtr->offset[0]; - pixelPitch=blockPtr->pitch; + width = blockPtr->width; + height = blockPtr->height; + pixelo = blockPtr->pixelPtr + blockPtr->offset[0]; + pixelPitch = blockPtr->pitch; savemap(blockPtr,mapa); - if (num>=MAXCOLORMAPSIZE) { + if (num >= MAXCOLORMAPSIZE) { Tcl_AppendResult(interp, "too many colors", (char *) NULL); return TCL_ERROR; } - if (num<2) num=2; - c=LSB(width); + if (num<2) { + num = 2; + } + c = LSB(width); Mputc(c,handle); - c=MSB(width); + c = MSB(width); Mputc(c,handle); - c=LSB(height); + c = LSB(height); Mputc(c,handle); - c=MSB(height); + c = MSB(height); Mputc(c,handle); resolution = 0; @@ -1433,16 +1483,20 @@ CommonWriteGIF(interp, handle, format, blockPtr) num = 1 << resolution; - /* background color */ + /* + * background color + */ c = 0; Mputc(c,handle); - /* zero for future expansion */ + /* + * zero for future expansion. + */ Mputc(c,handle); - for (x=0; x<num ;x++) { + for (x=0 ; x<num ; x++) { c = mapa[x][CM_RED]; Mputc(c,handle); c = mapa[x][CM_GREEN]; @@ -1463,28 +1517,28 @@ CommonWriteGIF(interp, handle, format, blockPtr) c = GIF_START; Mputc(c,handle); - c=LSB(top); + c = LSB(top); Mputc(c,handle); - c=MSB(top); + c = MSB(top); Mputc(c,handle); - c=LSB(left); + c = LSB(left); Mputc(c,handle); - c=MSB(left); + c = MSB(left); Mputc(c,handle); - c=LSB(width); + c = LSB(width); Mputc(c,handle); - c=MSB(width); + c = MSB(width); Mputc(c,handle); - c=LSB(height); + c = LSB(height); Mputc(c,handle); - c=MSB(height); + c = MSB(height); Mputc(c,handle); - c=0; + c = 0; Mputc(c,handle); - c=resolution; + c = resolution; Mputc(c,handle); ssize = rsize = blockPtr->width; @@ -1507,9 +1561,9 @@ color(red, green, blue, mapa) unsigned char mapa[MAXCOLORMAPSIZE][3]; { int x; - for (x=(alphaOffset != 0);x<=MAXCOLORMAPSIZE;x++) { - if ((mapa[x][CM_RED]==red) && (mapa[x][CM_GREEN]==green) && - (mapa[x][CM_BLUE]==blue)) { + for (x=(alphaOffset != 0) ; x<=MAXCOLORMAPSIZE ; x++) { + if ((mapa[x][CM_RED] == red) && (mapa[x][CM_GREEN] == green) && + (mapa[x][CM_BLUE] == blue)) { return x; } } @@ -1522,10 +1576,10 @@ nuevo(red, green, blue, mapa) int red,green,blue; unsigned char mapa[MAXCOLORMAPSIZE][3]; { - int x; - for (x=(alphaOffset != 0);x<=num;x++) { - if ((mapa[x][CM_RED]==red) && (mapa[x][CM_GREEN]==green) && - (mapa[x][CM_BLUE]==blue)) { + int x = (alphaOffset != 0); + for (; x<=num ; x++) { + if ((mapa[x][CM_RED] == red) && (mapa[x][CM_GREEN] == green) && + (mapa[x][CM_BLUE] == blue)) { return 0; } } @@ -1537,9 +1591,9 @@ savemap(blockPtr,mapa) Tk_PhotoImageBlock *blockPtr; unsigned char mapa[MAXCOLORMAPSIZE][3]; { - unsigned char *colores; + unsigned char *colores; int x,y; - unsigned char red,green,blue; + unsigned char red,green,blue; if (alphaOffset) { num = 0; @@ -1550,22 +1604,22 @@ savemap(blockPtr,mapa) num = -1; } - for(y=0;y<blockPtr->height;y++) { - colores=blockPtr->pixelPtr + blockPtr->offset[0] + for(y=0 ; y<blockPtr->height ; y++) { + colores = blockPtr->pixelPtr + blockPtr->offset[0] + y * blockPtr->pitch; - for(x=0;x<blockPtr->width;x++) { + for(x=0 ; x<blockPtr->width ; x++) { if (!alphaOffset || (colores[alphaOffset] != 0)) { red = colores[0]; green = colores[greenOffset]; blue = colores[blueOffset]; if (nuevo(red,green,blue,mapa)) { num++; - if (num>=MAXCOLORMAPSIZE) { + if (num >= MAXCOLORMAPSIZE) { return; } - mapa[num][CM_RED]=red; - mapa[num][CM_GREEN]=green; - mapa[num][CM_BLUE]=blue; + mapa[num][CM_RED] = red; + mapa[num][CM_GREEN] = green; + mapa[num][CM_BLUE] = blue; } } colores += pixelSize; @@ -1582,10 +1636,10 @@ ReadValue() if (csize == 0) { return EOF; } - if (alphaOffset && (pixelo[alphaOffset]==0)) { + if (alphaOffset && (pixelo[alphaOffset] == 0)) { col = 0; } else { - col = color(pixelo[0],pixelo[greenOffset],pixelo[blueOffset], mapa); + col = color(pixelo[0], pixelo[greenOffset], pixelo[blueOffset], mapa); } pixelo += pixelSize; if (--ssize <= 0) { @@ -1599,48 +1653,53 @@ ReadValue() -/*----------------------------------------------------------------------- +/* + *----------------------------------------------------------------------- * * miGIF Compression - mouse and ivo's GIF-compatible compression * - * -run length encoding compression routines- + * -run length encoding compression routines- * * Copyright (C) 1998 Hutchison Avenue Software Corporation - * http://www.hasc.com - * info@hasc.com - * - * 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 software is provided "AS IS." The Hutchison Avenue - * Software Corporation disclaims all warranties, either express or implied, - * including but not limited to implied warranties of merchantability and - * fitness for a particular purpose, with respect to this code and accompanying - * documentation. + * http://www.hasc.com + * info@hasc.com + * + * 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 software is + * provided "AS IS." The Hutchison Avenue Software Corporation + * disclaims all warranties, either express or implied, including but + * not limited to implied warranties of merchantability and fitness + * for a particular purpose, with respect to this code and + * accompanying documentation. * - * The miGIF compression routines do not, strictly speaking, generate files - * conforming to the GIF spec, since the image data is not LZW-compressed - * (this is the point: in order to avoid transgression of the Unisys patent - * on the LZW algorithm.) However, miGIF generates data streams that any - * reasonably sane LZW decompresser will decompress to what we want. - * - * miGIF compression uses run length encoding. It compresses horizontal runs - * of pixels of the same color. This type of compression gives good results - * on images with many runs, for example images with lines, text and solid - * shapes on a solid-colored background. It gives little or no compression - * on images with few runs, for example digital or scanned photos. - * - * der Mouse - * mouse@rodents.montreal.qc.ca - * 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B - * - * ivo@hasc.com + * The miGIF compression routines do not, strictly speaking, generate + * files conforming to the GIF spec, since the image data is not + * LZW-compressed (this is the point: in order to avoid transgression + * of the Unisys patent on the LZW algorithm.) However, miGIF + * generates data streams that any reasonably sane LZW decompresser + * will decompress to what we want. + * + * miGIF compression uses run length encoding. It compresses + * horizontal runs of pixels of the same color. This type of + * compression gives good results on images with many runs, for + * example images with lines, text and solid shapes on a solid-colored + * background. It gives little or no compression on images with few + * runs, for example digital or scanned photos. + * + * der Mouse + * mouse@rodents.montreal.qc.ca + * 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B + * + * ivo@hasc.com * * The Graphics Interchange Format(c) is the Copyright property of * CompuServe Incorporated. GIF(sm) is a Service Mark property of * CompuServe Incorporated. * + *----------------------------------------------------------------------- */ static int rl_pixel; @@ -1665,145 +1724,172 @@ static Tcl_Channel ofile; static unsigned char oblock[256]; static int oblen; -/* Used only when debugging GIF compression code */ -/* #define DEBUGGING_ENVARS */ +/* + * Used only when debugging GIF compression code + */ +/* #define MIGIF_DEBUGGING_ENVARS */ -#ifdef DEBUGGING_ENVARS +#ifdef MIGIF_DEBUGGING_ENVARS static int verbose_set = 0; static int verbose; -#define VERBOSE (verbose_set?verbose:set_verbose()) +#define MIGIF_VERBOSE (verbose_set?verbose:set_verbose()) +#define DEBUGMSG(printf_args) if (MIGIF_VERBOSE) { printf printf_args; } -static int set_verbose(void) +static int +set_verbose(void) { - verbose = !!getenv("GIF_VERBOSE"); - verbose_set = 1; - return(verbose); + verbose = !!getenv("MIGIF_VERBOSE"); + verbose_set = 1; + return verbose; } -#else - -#define VERBOSE 0 - -#endif - - static CONST char * binformat(v, nbits) unsigned int v; int nbits; { - static char bufs[8][64]; - static int bhand = 0; - unsigned int bit; - int bno; - char *bp; - - bhand --; - if (bhand < 0) bhand = (sizeof(bufs)/sizeof(bufs[0]))-1; - bp = &bufs[bhand][0]; - for (bno=nbits-1,bit=((unsigned int)1)<<bno;bno>=0;bno--,bit>>=1) - { *bp++ = (v & bit) ? '1' : '0'; - if (((bno&3) == 0) && (bno != 0)) *bp++ = '.'; - } - *bp = '\0'; - return(&bufs[bhand][0]); + static char bufs[8][64]; + static int bhand = 0; + unsigned int bit; + int bno; + char *bp; + + bhand--; + if (bhand < 0) { + bhand = (sizeof(bufs) / sizeof(bufs[0])) - 1; + } + bp = &bufs[bhand][0]; + for (bno=nbits-1,bit=((unsigned int)1)<<bno ; bno>=0 ; bno--,bit>>=1) { + *bp++ = (v & bit) ? '1' : '0'; + if (((bno&3) == 0) && (bno != 0)) { + *bp++ = '.'; + } + } + *bp = '\0'; + return &bufs[bhand][0]; } -static void write_block() +#else + +#define MIGIF_VERBOSE 0 +#define DEBUGMSG(printf_args) /* do nothing */ + +#endif + +static void +write_block() { - int i; - unsigned char c; - - if (VERBOSE) - { printf("write_block %d:",oblen); - for (i=0;i<oblen;i++) printf(" %02x",oblock[i]); - printf("\n"); - } - c = oblen; - Tcl_Write(ofile, (char *) &c, 1); - Tcl_Write(ofile, (char *) &oblock[0], oblen); - oblen = 0; + int i; + unsigned char c; + + if (MIGIF_VERBOSE) { + printf("write_block %d:", oblen); + for (i=0 ; i<oblen ; i++) { + printf(" %02x", oblock[i]); + } + printf("\n"); + } + c = oblen; + Tcl_Write(ofile, (char *) &c, 1); + Tcl_Write(ofile, (char *) &oblock[0], oblen); + oblen = 0; } static void block_out(c) unsigned char c; { - if (VERBOSE) printf("block_out %s\n",binformat(c,8)); - oblock[oblen++] = c; - if (oblen >= 255) write_block(); + DEBUGMSG(("block_out %s\n", binformat(c, 8))); + oblock[oblen++] = c; + if (oblen >= 255) { + write_block(); + } } -static void block_flush() +static void +block_flush() { - if (VERBOSE) printf("block_flush\n"); - if (oblen > 0) write_block(); + DEBUGMSG(("block_flush\n")); + if (oblen > 0) { + write_block(); + } } -static void output(val) +static void +output(val) int val; { - if (VERBOSE) printf("output %s [%s %d %d]\n",binformat(val,out_bits),binformat(obuf,obits),obits,out_bits); - obuf |= val << obits; - obits += out_bits; - while (obits >= 8) - { block_out(obuf&0xff); - obuf >>= 8; - obits -= 8; - } - if (VERBOSE) printf("output leaving [%s %d]\n",binformat(obuf,obits),obits); + DEBUGMSG(("output %s [%s %d %d]\n", binformat(val, out_bits), + binformat(obuf, obits), obits, out_bits)); + obuf |= val << obits; + obits += out_bits; + while (obits >= 8) { + block_out(obuf&0xff); + obuf >>= 8; + obits -= 8; + } + DEBUGMSG(("output leaving [%s %d]\n", binformat(obuf, obits), obits)); } -static void output_flush() +static void +output_flush() { - if (VERBOSE) printf("output_flush\n"); - if (obits > 0) block_out(obuf); - block_flush(); + DEBUGMSG(("output_flush\n")); + if (obits > 0) { + block_out(obuf); + } + block_flush(); } -static void did_clear() +static void +did_clear() { - if (VERBOSE) printf("did_clear\n"); - out_bits = out_bits_init; - out_bump = out_bump_init; - out_clear = out_clear_init; - out_count = 0; - rl_table_max = 0; - just_cleared = 1; + DEBUGMSG(("did_clear\n")); + out_bits = out_bits_init; + out_bump = out_bump_init; + out_clear = out_clear_init; + out_count = 0; + rl_table_max = 0; + just_cleared = 1; } static void output_plain(c) int c; { - if (VERBOSE) printf("output_plain %s\n",binformat(c,out_bits)); - just_cleared = 0; - output(c); - out_count ++; - if (out_count >= out_bump) - { out_bits ++; - out_bump += 1 << (out_bits - 1); - } - if (out_count >= out_clear) - { output(code_clear); - did_clear(); - } + DEBUGMSG(("output_plain %s\n", binformat(c, out_bits))); + just_cleared = 0; + output(c); + out_count++; + if (out_count >= out_bump) { + out_bits++; + out_bump += 1 << (out_bits - 1); + } + if (out_count >= out_clear) { + output(code_clear); + did_clear(); + } } -static unsigned int isqrt(x) +static unsigned int +isqrt(x) unsigned int x; { - unsigned int r; - unsigned int v; - - if (x < 2) return(x); - for (v=x,r=1;v;v>>=2,r<<=1) ; - while (1) - { v = ((x / r) + r) / 2; - if ((v == r) || (v == r+1)) return(r); - r = v; - } + unsigned int r; + unsigned int v; + + if (x < 2) { + return x; + } + for (v=x,r=1 ; v ; v>>=2,r<<=1); + while (1) { + v = ((x / r) + r) / 2; + if (v==r || v==r+1) { + return r; + } + r = v; + } } static unsigned int @@ -1811,205 +1897,224 @@ compute_triangle_count(count, nrepcodes) unsigned int count; unsigned int nrepcodes; { - unsigned int perrep; - unsigned int cost; - - cost = 0; - perrep = (nrepcodes * (nrepcodes+1)) / 2; - while (count >= perrep) - { cost += nrepcodes; - count -= perrep; - } - if (count > 0) - { unsigned int n; - n = isqrt(count); - while ((n*(n+1)) >= 2*count) n --; - while ((n*(n+1)) < 2*count) n ++; - cost += n; - } - return(cost); + unsigned int perrep; + unsigned int cost; + + cost = 0; + perrep = (nrepcodes * (nrepcodes+1)) / 2; + while (count >= perrep) { + cost += nrepcodes; + count -= perrep; + } + if (count > 0) { + unsigned int n; + n = isqrt(count); + while (n*(n+1) >= 2*count) { + n--; + } + while (n*(n+1) < 2*count) { + n++; + } + cost += n; + } + return cost; } -static void max_out_clear() +static void +max_out_clear() { - out_clear = max_ocodes; + out_clear = max_ocodes; } -static void reset_out_clear() +static void +reset_out_clear() { - out_clear = out_clear_init; - if (out_count >= out_clear) - { output(code_clear); - did_clear(); - } + out_clear = out_clear_init; + if (out_count >= out_clear) { + output(code_clear); + did_clear(); + } } static void rl_flush_fromclear(count) int count; { - int n; - - if (VERBOSE) printf("rl_flush_fromclear %d\n",count); - max_out_clear(); - rl_table_pixel = rl_pixel; - n = 1; - while (count > 0) - { if (n == 1) - { rl_table_max = 1; - output_plain(rl_pixel); - count --; - } - else if (count >= n) - { rl_table_max = n; - output_plain(rl_basecode+n-2); - count -= n; - } - else if (count == 1) - { rl_table_max ++; - output_plain(rl_pixel); - count = 0; - } - else - { rl_table_max ++; - output_plain(rl_basecode+count-2); - count = 0; - } - if (out_count == 0) n = 1; else n ++; - } - reset_out_clear(); - if (VERBOSE) printf("rl_flush_fromclear leaving table_max=%d\n",rl_table_max); + int n; + + DEBUGMSG(("rl_flush_fromclear %d\n", count)); + max_out_clear(); + rl_table_pixel = rl_pixel; + n = 1; + while (count > 0) { + if (n == 1) { + rl_table_max = 1; + output_plain(rl_pixel); + count--; + } else if (count >= n) { + rl_table_max = n; + output_plain(rl_basecode+n-2); + count -= n; + } else if (count == 1) { + rl_table_max++; + output_plain(rl_pixel); + count = 0; + } else { + rl_table_max++; + output_plain(rl_basecode+count-2); + count = 0; + } + if (out_count == 0) { + n = 1; + } else { + n++; + } + } + reset_out_clear(); + DEBUGMSG(("rl_flush_fromclear leaving table_max=%d\n", rl_table_max)); } -static void rl_flush_clearorrep(count) +static void +rl_flush_clearorrep(count) int count; { - int withclr; - - if (VERBOSE) printf("rl_flush_clearorrep %d\n",count); - withclr = 1 + compute_triangle_count(count,max_ocodes); - if (withclr < count) - { output(code_clear); - did_clear(); - rl_flush_fromclear(count); - } - else - { for (;count>0;count--) output_plain(rl_pixel); - } + int withclr; + + DEBUGMSG(("rl_flush_clearorrep %d\n", count)); + withclr = 1 + compute_triangle_count(count, max_ocodes); + if (withclr < count) { + output(code_clear); + did_clear(); + rl_flush_fromclear(count); + } else { + for (; count>0 ; count--) { + output_plain(rl_pixel); + } + } } -static void rl_flush_withtable(count) +static void +rl_flush_withtable(count) int count; { - int repmax; - int repleft; - int leftover; - - if (VERBOSE) printf("rl_flush_withtable %d\n",count); - repmax = count / rl_table_max; - leftover = count % rl_table_max; - repleft = (leftover ? 1 : 0); - if (out_count+repmax+repleft > max_ocodes) - { repmax = max_ocodes - out_count; - leftover = count - (repmax * rl_table_max); - repleft = 1 + compute_triangle_count(leftover,max_ocodes); - } - if (VERBOSE) printf("rl_flush_withtable repmax=%d leftover=%d repleft=%d\n",repmax,leftover,repleft); - if (1+(int)compute_triangle_count(count,max_ocodes) < repmax+repleft) - { output(code_clear); - did_clear(); - rl_flush_fromclear(count); - return; - } - max_out_clear(); - for (;repmax>0;repmax--) output_plain(rl_basecode+rl_table_max-2); - if (leftover) - { if (just_cleared) - { rl_flush_fromclear(leftover); - } - else if (leftover == 1) - { output_plain(rl_pixel); - } - else - { output_plain(rl_basecode+leftover-2); - } - } - reset_out_clear(); + int repmax; + int repleft; + int leftover; + + DEBUGMSG(("rl_flush_withtable %d\n", count)); + repmax = count / rl_table_max; + leftover = count % rl_table_max; + repleft = (leftover ? 1 : 0); + if (out_count+repmax+repleft > max_ocodes) { + repmax = max_ocodes - out_count; + leftover = count - (repmax * rl_table_max); + repleft = 1 + compute_triangle_count(leftover, max_ocodes); + } + DEBUGMSG(("rl_flush_withtable repmax=%d leftover=%d repleft=%d\n", + repmax, leftover, repleft)); + if (1+(int)compute_triangle_count(count, max_ocodes) < repmax+repleft) { + output(code_clear); + did_clear(); + rl_flush_fromclear(count); + return; + } + max_out_clear(); + for (; repmax>0 ; repmax--) { + output_plain(rl_basecode + rl_table_max - 2); + } + if (leftover) { + if (just_cleared) { + rl_flush_fromclear(leftover); + } else if (leftover == 1) { + output_plain(rl_pixel); + } else { + output_plain(rl_basecode + leftover - 2); + } + } + reset_out_clear(); } -static void rl_flush() +static void +rl_flush() { - if (VERBOSE) printf("rl_flush [ %d %d\n",rl_count,rl_pixel); - if (rl_count == 1) - { output_plain(rl_pixel); + DEBUGMSG(("rl_flush [ %d %d\n", rl_count, rl_pixel)); + if (rl_count == 1) { + output_plain(rl_pixel); + rl_count = 0; + DEBUGMSG(("rl_flush ]\n")); + return; + } + if (just_cleared) { + rl_flush_fromclear(rl_count); + } else if ((rl_table_max < 2) || (rl_table_pixel != rl_pixel)) { + rl_flush_clearorrep(rl_count); + } else { + rl_flush_withtable(rl_count); + } + DEBUGMSG(("rl_flush ]\n")); rl_count = 0; - if (VERBOSE) printf("rl_flush ]\n"); - return; - } - if (just_cleared) - { rl_flush_fromclear(rl_count); - } - else if ((rl_table_max < 2) || (rl_table_pixel != rl_pixel)) - { rl_flush_clearorrep(rl_count); - } - else - { rl_flush_withtable(rl_count); - } - if (VERBOSE) printf("rl_flush ]\n"); - rl_count = 0; } -static void compress( init_bits, handle, readValue ) +static void +compress(init_bits, handle, readValue) int init_bits; Tcl_Channel handle; ifunptr readValue; { - int c; - - ofile = handle; - obuf = 0; - obits = 0; - oblen = 0; - code_clear = 1 << (init_bits - 1); - code_eof = code_clear + 1; - rl_basecode = code_eof + 1; - out_bump_init = (1 << (init_bits - 1)) - 1; - /* for images with a lot of runs, making out_clear_init larger will - give better compression. */ - out_clear_init = (init_bits <= 3) ? 9 : (out_bump_init-1); -#ifdef DEBUGGING_ENVARS - { const char *ocienv; - ocienv = getenv("GIF_OUT_CLEAR_INIT"); - if (ocienv) - { out_clear_init = atoi(ocienv); - if (VERBOSE) printf("[overriding out_clear_init to %d]\n",out_clear_init); - } - } + int c; + + ofile = handle; + obuf = 0; + obits = 0; + oblen = 0; + code_clear = 1 << (init_bits - 1); + code_eof = code_clear + 1; + rl_basecode = code_eof + 1; + out_bump_init = (1 << (init_bits - 1)) - 1; + /* + * For images with a lot of runs, making out_clear_init larger + * will give better compression. + */ + out_clear_init = (init_bits <= 3) ? 9 : (out_bump_init-1); +#ifdef MIGIF_DEBUGGING_ENVARS + { + const char *ocienv; + ocienv = getenv("MIGIF_OUT_CLEAR_INIT"); + if (ocienv) { + out_clear_init = atoi(ocienv); + DEBUGMSG(("[overriding out_clear_init to %d]\n", out_clear_init)); + } + } #endif - out_bits_init = init_bits; - max_ocodes = (1 << GIFBITS) - ((1 << (out_bits_init - 1)) + 3); - did_clear(); - output(code_clear); - rl_count = 0; - while (1) - { c = readValue(); - if ((rl_count > 0) && (c != rl_pixel)) rl_flush(); - if (c == EOF) break; - if (rl_pixel == c) - { rl_count ++; - } - else - { rl_pixel = c; - rl_count = 1; - } - } - output(code_eof); - output_flush(); + out_bits_init = init_bits; + max_ocodes = (1 << GIFBITS) - ((1 << (out_bits_init - 1)) + 3); + did_clear(); + output(code_clear); + rl_count = 0; + while (1) { + c = readValue(); + if ((rl_count > 0) && (c != rl_pixel)) { + rl_flush(); + } + if (c == EOF) { + break; + } + if (rl_pixel == c) { + rl_count++; + } else { + rl_pixel = c; + rl_count = 1; + } + } + output(code_eof); + output_flush(); } -/*----------------------------------------------------------------------- +/* + *----------------------------------------------------------------------- * * End of miGIF section - See copyright notice at start of section. * - *-----------------------------------------------------------------------*/ + *----------------------------------------------------------------------- + */ diff --git a/generic/tkImgPPM.c b/generic/tkImgPPM.c index 98c790b..6bad6d8 100644 --- a/generic/tkImgPPM.c +++ b/generic/tkImgPPM.c @@ -13,7 +13,7 @@ * Department of Computer Science, * Australian National University. * - * RCS: @(#) $Id: tkImgPPM.c,v 1.8 2001/09/14 20:35:58 andreas_kupries Exp $ + * RCS: @(#) $Id: tkImgPPM.c,v 1.8.2.1 2002/06/10 05:38:23 wolfsuit Exp $ */ #define USE_OLD_IMAGE @@ -192,7 +192,7 @@ FileReadPPM(interp, chan, fileName, formatString, imageHandle, destX, destY, Tk_PhotoExpand(imageHandle, destX + width, destY + height); if (srcY > 0) { - Tcl_Seek(chan, (srcY * block.pitch), SEEK_CUR); + Tcl_Seek(chan, (Tcl_WideInt)(srcY * block.pitch), SEEK_CUR); } nLines = (MAX_MEMORY + block.pitch - 1) / block.pitch; diff --git a/generic/tkImgPhoto.c b/generic/tkImgPhoto.c index 1846990..31139c2 100644 --- a/generic/tkImgPhoto.c +++ b/generic/tkImgPhoto.c @@ -16,7 +16,7 @@ * Department of Computer Science, * Australian National University. * - * RCS: @(#) $Id: tkImgPhoto.c,v 1.24.2.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkImgPhoto.c,v 1.24.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkInt.h" @@ -315,6 +315,7 @@ typedef struct ThreadSpecificData { * list of known photo image formats.*/ Tk_PhotoImageFormat *oldFormatList; /* Pointer to the first in the * list of known photo image formats.*/ + int initialized; /* set to 1 if we've initialized the strucuture */ } ThreadSpecificData; static Tcl_ThreadDataKey dataKey; @@ -358,6 +359,8 @@ static int imgPhotoColorHashInitialized; * Forward declarations */ +static void PhotoFormatThreadExitProc _ANSI_ARGS_(( + ClientData clientData)); static int ImgPhotoCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); static int ParseSubcommandOptions _ANSI_ARGS_(( @@ -431,6 +434,48 @@ static void PhotoOptionCleanupProc _ANSI_ARGS_(( * *---------------------------------------------------------------------- */ + +static void +PhotoFormatThreadExitProc(clientData) + ClientData clientData; /* not used */ +{ + Tk_PhotoImageFormat *freePtr; + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) + Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + + while (tsdPtr->oldFormatList != NULL) { + freePtr = tsdPtr->oldFormatList; + tsdPtr->oldFormatList = tsdPtr->oldFormatList->nextPtr; + ckfree((char *) freePtr->name); + ckfree((char *) freePtr); + } + while (tsdPtr->formatList != NULL) { + freePtr = tsdPtr->formatList; + tsdPtr->formatList = tsdPtr->formatList->nextPtr; + ckfree((char *) freePtr->name); + ckfree((char *) freePtr); + } +} + +/* + *---------------------------------------------------------------------- + * + * Tk_CreateOldPhotoImageFormat, Tk_CreatePhotoImageFormat -- + * + * This procedure is invoked by an image file handler to register + * a new photo image format and the procedures that handle the + * new format. The procedure is typically invoked during + * Tcl_AppInit. + * + * Results: + * None. + * + * Side effects: + * The new image file format is entered into a table used in the + * photo image "read" and "write" subcommands. + * + *---------------------------------------------------------------------- + */ void Tk_CreateOldPhotoImageFormat(formatPtr) Tk_PhotoImageFormat *formatPtr; @@ -443,6 +488,10 @@ Tk_CreateOldPhotoImageFormat(formatPtr) ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + if (!tsdPtr->initialized) { + tsdPtr->initialized = 1; + Tcl_CreateThreadExitHandler(PhotoFormatThreadExitProc, NULL); + } copyPtr = (Tk_PhotoImageFormat *) ckalloc(sizeof(Tk_PhotoImageFormat)); *copyPtr = *formatPtr; copyPtr->name = (char *) ckalloc((unsigned) (strlen(formatPtr->name) + 1)); @@ -463,6 +512,10 @@ Tk_CreatePhotoImageFormat(formatPtr) ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + if (!tsdPtr->initialized) { + tsdPtr->initialized = 1; + Tcl_CreateThreadExitHandler(PhotoFormatThreadExitProc, NULL); + } copyPtr = (Tk_PhotoImageFormat *) ckalloc(sizeof(Tk_PhotoImageFormat)); *copyPtr = *formatPtr; copyPtr->name = (char *) ckalloc((unsigned) (strlen(formatPtr->name) + 1)); @@ -1849,19 +1902,14 @@ ImgPhotoConfigureMaster(interp, masterPtr, objc, objv, flags) if (chan == NULL) { return TCL_ERROR; } - if (Tcl_SetChannelOption(interp, chan, "-translation", "binary") - != TCL_OK) { - Tcl_Close(NULL, chan); - return TCL_ERROR; - } - if (Tcl_SetChannelOption(interp, chan, "-encoding", "binary") - != TCL_OK) { - Tcl_Close(NULL, chan); - return TCL_ERROR; - } - if (MatchFileFormat(interp, chan, masterPtr->fileString, - masterPtr->format, &imageFormat, &imageWidth, - &imageHeight, &oldformat) != TCL_OK) { + /* + * -translation binary also sets -encoding binary + */ + if ((Tcl_SetChannelOption(interp, chan, + "-translation", "binary") != TCL_OK) || + (MatchFileFormat(interp, chan, masterPtr->fileString, + masterPtr->format, &imageFormat, &imageWidth, + &imageHeight, &oldformat) != TCL_OK)) { Tcl_Close(NULL, chan); return TCL_ERROR; } @@ -1885,7 +1933,7 @@ ImgPhotoConfigureMaster(interp, masterPtr, objc, objv, flags) if ((masterPtr->fileString == NULL) && (masterPtr->dataString != NULL) && ((masterPtr->dataString != oldData) - || (masterPtr->format != oldFormat))) { + || (masterPtr->format != oldFormat))) { if (MatchStringFormat(interp, masterPtr->dataString, masterPtr->format, &imageFormat, &imageWidth, @@ -3572,7 +3620,7 @@ MatchFileFormat(interp, chan, fileName, formatObj, imageFormatPtr, } } if (formatPtr->fileMatchProc != NULL) { - (void) Tcl_Seek(chan, 0L, SEEK_SET); + (void) Tcl_Seek(chan, Tcl_LongAsWide(0L), SEEK_SET); if ((*formatPtr->fileMatchProc)(chan, fileName, formatObj, widthPtr, heightPtr, interp)) { @@ -3603,7 +3651,7 @@ MatchFileFormat(interp, chan, fileName, formatObj, imageFormatPtr, } } if (formatPtr->fileMatchProc != NULL) { - (void) Tcl_Seek(chan, 0L, SEEK_SET); + (void) Tcl_Seek(chan, Tcl_LongAsWide(0L), SEEK_SET); if ((*formatPtr->fileMatchProc)(chan, fileName, (Tcl_Obj *) formatString, widthPtr, heightPtr, interp)) { if (*widthPtr < 1) { @@ -3633,7 +3681,7 @@ MatchFileFormat(interp, chan, fileName, formatObj, imageFormatPtr, *imageFormatPtr = formatPtr; *oldformat = useoldformat; - (void) Tcl_Seek(chan, 0L, SEEK_SET); + (void) Tcl_Seek(chan, Tcl_LongAsWide(0L), SEEK_SET); return TCL_OK; } @@ -3894,6 +3942,7 @@ Tk_PhotoPutBlock(handle, blockPtr, x, y, width, height) (VOID *) (blockPtr->pixelPtr + blockPtr->offset[0]), (size_t) (height * width * 4)); } else { + int alpha; for (hLeft = height; hLeft > 0;) { srcLinePtr = blockPtr->pixelPtr + blockPtr->offset[0]; hCopy = MIN(hLeft, blockPtr->height); @@ -3905,24 +3954,29 @@ Tk_PhotoPutBlock(handle, blockPtr, x, y, width, height) wLeft -= wCopy; srcPtr = srcLinePtr; for (; wCopy > 0; --wCopy) { - if (!destPtr[3]) { - destPtr[0] = destPtr[1] = destPtr[2] = 0xd9; - } - if (!alphaOffset || (srcPtr[alphaOffset] == 255)) { - *destPtr++ = srcPtr[0]; - *destPtr++ = srcPtr[greenOffset]; - *destPtr++ = srcPtr[blueOffset]; - *destPtr++ = 255; - } else { - if (srcPtr[alphaOffset]) { - destPtr[0] += (srcPtr[0] - destPtr[0]) * srcPtr[alphaOffset] / 255; - destPtr[1] += (srcPtr[greenOffset] - destPtr[1]) * srcPtr[alphaOffset] / 255; - destPtr[2] += (srcPtr[blueOffset] - destPtr[2]) * srcPtr[alphaOffset] / 255; - destPtr[3] += (255 - destPtr[3]) * srcPtr[alphaOffset] / 255; - } - destPtr+=4; - } - srcPtr += blockPtr->pixelSize; + alpha = srcPtr[alphaOffset]; + if (!destPtr[3]) { + destPtr[0] = destPtr[1] = destPtr[2] = 0xd9; + } + if (!alphaOffset || (alpha == 255)) { + /* new solid part of the image */ + *destPtr++ = srcPtr[0]; + *destPtr++ = srcPtr[greenOffset]; + *destPtr++ = srcPtr[blueOffset]; + *destPtr++ = 255; + } else { + if (alpha) { + destPtr[0] += (srcPtr[0] - destPtr[0]) * alpha / 255; + destPtr[1] += (srcPtr[greenOffset] - destPtr[1]) * alpha / 255; + destPtr[2] += (srcPtr[blueOffset] - destPtr[2]) * alpha / 255; + destPtr[3] += (255 - destPtr[3]) * alpha / 255; + } + /* + * else should be empty space + */ + destPtr += 4; + } + srcPtr += blockPtr->pixelSize; } } srcLinePtr += blockPtr->pitch; @@ -3935,61 +3989,62 @@ Tk_PhotoPutBlock(handle, blockPtr, x, y, width, height) * Add this new block to the region which specifies which data is valid. */ - if (alphaOffset) { - int x1, y1, end; - - /* - * This block is grossly inefficient. For each row in the image, it - * finds each continguous string of nontransparent pixels, then marks - * those areas as valid in the validRegion mask. This makes drawing very - * efficient, because of the way we use X: we just say, here's your - * mask, and here's your data. We need not worry about the current - * background color, etc. But this costs us a lot on the image setup. - * Still, image setup only happens once, whereas the drawing happens - * many times, so this might be the best way to go. - * - * An alternative might be to not set up this mask, and instead, at - * drawing time, for each transparent pixel, set its color to the - * color of the background behind that pixel. This is what I suspect - * most of programs do. However, they don't have to deal with the canvas, - * which could have many different background colors. Determining the - * correct bg color for a given pixel might be expensive. - */ - - destLinePtr = masterPtr->pix24 + (y * masterPtr->width + x) * 4 + 3; - for (y1 = 0; y1 < height; y1++) { - x1 = 0; - destPtr = destLinePtr; - while (x1 < width) { - /* search for first non-transparent pixel */ - while ((x1 < width) && !*destPtr) { + if (alphaOffset) { + int x1, y1, end; + + /* + * This block is grossly inefficient. For each row in the image, it + * finds each continguous string of nontransparent pixels, then marks + * those areas as valid in the validRegion mask. This makes drawing + * very efficient, because of the way we use X: we just say, here's + * your mask, and here's your data. We need not worry about the + * current background color, etc. But this costs us a lot on the + * image setup. Still, image setup only happens once, whereas the + * drawing happens many times, so this might be the best way to go. + * + * An alternative might be to not set up this mask, and instead, at + * drawing time, for each transparent pixel, set its color to the + * color of the background behind that pixel. This is what I suspect + * most of programs do. However, they don't have to deal with the + * canvas, which could have many different background colors. + * Determining the correct bg color for a given pixel might be + * expensive. + */ + + destLinePtr = masterPtr->pix24 + (y * masterPtr->width + x) * 4 + 3; + for (y1 = 0; y1 < height; y1++) { + x1 = 0; + destPtr = destLinePtr; + while (x1 < width) { + /* search for first non-transparent pixel */ + while ((x1 < width) && !*destPtr) { x1++; destPtr += 4; + } + end = x1; + /* search for first transparent pixel */ + while ((end < width) && *destPtr) { + end++; destPtr += 4; + } + if (end > x1) { + rect.x = x + x1; + rect.y = y + y1; + rect.width = end - x1; + rect.height = 1; + TkUnionRectWithRegion(&rect, masterPtr->validRegion, + masterPtr->validRegion); + } + x1 = end; } - end = x1; - /* search for first transparent pixel */ - while ((end < width) && *destPtr) { - end++; destPtr += 4; - } - if (end > x1) { - rect.x = x + x1; - rect.y = y + y1; - rect.width = end - x1; - rect.height = 1; - TkUnionRectWithRegion(&rect, masterPtr->validRegion, - masterPtr->validRegion); - } - x1 = end; + destLinePtr += masterPtr->width * 4; } - destLinePtr += masterPtr->width * 4; + } else { + rect.x = x; + rect.y = y; + rect.width = width; + rect.height = height; + TkUnionRectWithRegion(&rect, masterPtr->validRegion, + masterPtr->validRegion); } - } else { - rect.x = x; - rect.y = y; - rect.width = width; - rect.height = height; - TkUnionRectWithRegion(&rect, masterPtr->validRegion, - masterPtr->validRegion); - } /* * Update each instance. @@ -4190,43 +4245,43 @@ Tk_PhotoPutZoomedBlock(handle, blockPtr, x, y, width, height, zoomX, zoomY, * Add this new block to the region that specifies which data is valid. */ - if (alphaOffset) { - int x1, y1, end; + if (alphaOffset) { + int x1, y1, end; - destLinePtr = masterPtr->pix24 + (y * masterPtr->width + x) * 4 + 3; - for (y1 = 0; y1 < height; y1++) { - x1 = 0; - destPtr = destLinePtr; - while (x1 < width) { - /* search for first non-transparent pixel */ - while ((x1 < width) && !*destPtr) { + destLinePtr = masterPtr->pix24 + (y * masterPtr->width + x) * 4 + 3; + for (y1 = 0; y1 < height; y1++) { + x1 = 0; + destPtr = destLinePtr; + while (x1 < width) { + /* search for first non-transparent pixel */ + while ((x1 < width) && !*destPtr) { x1++; destPtr += 4; + } + end = x1; + /* search for first transparent pixel */ + while ((end < width) && *destPtr) { + end++; destPtr += 4; + } + if (end > x1) { + rect.x = x + x1; + rect.y = y + y1; + rect.width = end - x1; + rect.height = 1; + TkUnionRectWithRegion(&rect, masterPtr->validRegion, + masterPtr->validRegion); + } + x1 = end; } - end = x1; - /* search for first transparent pixel */ - while ((end < width) && *destPtr) { - end++; destPtr += 4; - } - if (end > x1) { - rect.x = x + x1; - rect.y = y + y1; - rect.width = end - x1; - rect.height = 1; - TkUnionRectWithRegion(&rect, masterPtr->validRegion, - masterPtr->validRegion); - } - x1 = end; + destLinePtr += masterPtr->width * 4; } - destLinePtr += masterPtr->width * 4; + } else { + rect.x = x; + rect.y = y; + rect.width = width; + rect.height = height; + TkUnionRectWithRegion(&rect, masterPtr->validRegion, + masterPtr->validRegion); } - } else { - rect.x = x; - rect.y = y; - rect.width = width; - rect.height = height; - TkUnionRectWithRegion(&rect, masterPtr->validRegion, - masterPtr->validRegion); - } /* * Update each instance. diff --git a/generic/tkInt.decls b/generic/tkInt.decls index 44d4afe..413e2b1 100644 --- a/generic/tkInt.decls +++ b/generic/tkInt.decls @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tkInt.decls,v 1.21.2.3 2002/02/05 02:25:15 wolfsuit Exp $ +# RCS: @(#) $Id: tkInt.decls,v 1.21.2.4 2002/06/10 05:38:23 wolfsuit Exp $ library tk @@ -645,6 +645,18 @@ declare 141 generic { TkWindow ** TkWmStackorderToplevel(TkWindow *parentPtr) } +declare 142 generic { + void TkFocusFree(TkMainInfo *mainPtr) +} + +declare 143 generic { + void TkClipCleanup(TkDisplay *dispPtr) +} + +declare 144 generic { + void TkGCCleanup(TkDisplay *dispPtr) +} + ############################################################################## # Define the platform specific internal Tcl interface. These functions are @@ -691,6 +703,22 @@ declare 8 unix { int TkpScanWindowId (Tcl_Interp *interp, CONST char *string, Window *idPtr) } +declare 9 unix { + void TkWmCleanup (TkDisplay *dispPtr) +} + +declare 10 unix { + void TkSendCleanup (TkDisplay *dispPtr) +} + +declare 11 unix { + void TkFreeXId (TkDisplay *dispPtr) +} + +declare 12 unix { + int TkpWmSetState (TkWindow *winPtr, int state) +} + ############################ # Windows specific functions diff --git a/generic/tkInt.h b/generic/tkInt.h index 4fd3b46..f69d395 100644 --- a/generic/tkInt.h +++ b/generic/tkInt.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: $Id: tkInt.h,v 1.40.2.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: $Id: tkInt.h,v 1.40.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #ifndef _TKINT @@ -82,6 +82,16 @@ typedef struct TkCursor { } TkCursor; /* + * This defines whether we should try to use XIM over-the-spot style + * input. Allow users to override it. It is a much more elegant use + * of XIM, but uses a bit more memory. + */ + +#ifndef TK_XIM_SPOT +# define TK_XIM_SPOT 1 +#endif + +/* * One of the following structures is maintained for each display * containing a window managed by Tk. In part, the structure is * used to store thread-specific data, since each thread will have @@ -413,8 +423,9 @@ typedef struct TkDisplay { /* First in list of chunks of window * identifers that can't be reused right * now. */ - int idCleanupScheduled; /* 1 means a call to WindowIdCleanup has - * already been scheduled, 0 means it + Tcl_TimerToken idCleanupScheduled; + /* If set, it means a call to WindowIdCleanup + * has already been scheduled, 0 means it * hasn't. */ /* @@ -456,6 +467,9 @@ typedef struct TkDisplay { #ifdef TK_USE_INPUT_METHODS XIM inputMethod; /* Input method for this display */ +#if TK_XIM_SPOT + XFontSet inputXfs; /* XFontSet cached for over-the-spot XIM. */ +#endif #endif /* TK_USE_INPUT_METHODS */ Tcl_HashTable winTable; /* Maps from X window ids to TkWindow ptrs. */ @@ -481,6 +495,7 @@ typedef struct TkDisplay { long deletionEpoch; /* Incremented by window deletions */ } TkDisplay; + /* * One of the following structures exists for each error handler * created by a call to Tk_CreateErrorHandler. The structure @@ -517,8 +532,6 @@ typedef struct TkErrorHandler { } TkErrorHandler; - - /* * One of the following structures exists for each event handler * created by calling Tk_CreateEventHandler. This information @@ -700,7 +713,7 @@ typedef struct TkWindow { * declared for this window, or * NULL if none. */ #ifdef TK_USE_INPUT_METHODS - XIC inputContext; /* Input context (for input methods). */ + XIC inputContext; /* XIM input context. */ #endif /* TK_USE_INPUT_METHODS */ /* @@ -983,6 +996,10 @@ EXTERN int Tk_MessageBoxObjCmd _ANSI_ARGS_((ClientData clientData, EXTERN int Tk_MessageObjCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Tk_PanedWindowObjCmd _ANSI_ARGS_(( + ClientData clientData, + Tcl_Interp *interp, int objc, + Tcl_Obj *CONST objv[])); EXTERN int Tk_OptionObjCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); diff --git a/generic/tkIntDecls.h b/generic/tkIntDecls.h index a410c00..2484efd 100644 --- a/generic/tkIntDecls.h +++ b/generic/tkIntDecls.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkIntDecls.h,v 1.13.2.4 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkIntDecls.h,v 1.13.2.5 2002/06/10 05:38:23 wolfsuit Exp $ */ #ifndef _TKINTDECLS @@ -531,6 +531,12 @@ EXTERN TkRegion TkPhotoGetValidRegion _ANSI_ARGS_(( /* 141 */ EXTERN TkWindow ** TkWmStackorderToplevel _ANSI_ARGS_(( TkWindow * parentPtr)); +/* 142 */ +EXTERN void TkFocusFree _ANSI_ARGS_((TkMainInfo * mainPtr)); +/* 143 */ +EXTERN void TkClipCleanup _ANSI_ARGS_((TkDisplay * dispPtr)); +/* 144 */ +EXTERN void TkGCCleanup _ANSI_ARGS_((TkDisplay * dispPtr)); typedef struct TkIntStubs { int magic; @@ -788,6 +794,9 @@ typedef struct TkIntStubs { void (*tkpInitKeymapInfo) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 139 */ TkRegion (*tkPhotoGetValidRegion) _ANSI_ARGS_((Tk_PhotoHandle handle)); /* 140 */ TkWindow ** (*tkWmStackorderToplevel) _ANSI_ARGS_((TkWindow * parentPtr)); /* 141 */ + void (*tkFocusFree) _ANSI_ARGS_((TkMainInfo * mainPtr)); /* 142 */ + void (*tkClipCleanup) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 143 */ + void (*tkGCCleanup) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 144 */ } TkIntStubs; #ifdef __cplusplus @@ -1455,6 +1464,18 @@ extern TkIntStubs *tkIntStubsPtr; #define TkWmStackorderToplevel \ (tkIntStubsPtr->tkWmStackorderToplevel) /* 141 */ #endif +#ifndef TkFocusFree +#define TkFocusFree \ + (tkIntStubsPtr->tkFocusFree) /* 142 */ +#endif +#ifndef TkClipCleanup +#define TkClipCleanup \ + (tkIntStubsPtr->tkClipCleanup) /* 143 */ +#endif +#ifndef TkGCCleanup +#define TkGCCleanup \ + (tkIntStubsPtr->tkGCCleanup) /* 144 */ +#endif #endif /* defined(USE_TK_STUBS) && !defined(USE_TK_STUB_PROCS) */ diff --git a/generic/tkIntPlatDecls.h b/generic/tkIntPlatDecls.h index baa4c6a..2d8b44a 100644 --- a/generic/tkIntPlatDecls.h +++ b/generic/tkIntPlatDecls.h @@ -9,7 +9,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tkIntPlatDecls.h,v 1.9.2.3 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkIntPlatDecls.h,v 1.9.2.4 2002/06/10 05:38:23 wolfsuit Exp $ */ #ifndef _TKINTPLATDECLS @@ -55,6 +55,15 @@ EXTERN void TkUnixSetMenubar _ANSI_ARGS_((Tk_Window tkwin, /* 8 */ EXTERN int TkpScanWindowId _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, Window * idPtr)); +/* 9 */ +EXTERN void TkWmCleanup _ANSI_ARGS_((TkDisplay * dispPtr)); +/* 10 */ +EXTERN void TkSendCleanup _ANSI_ARGS_((TkDisplay * dispPtr)); +/* 11 */ +EXTERN void TkFreeXId _ANSI_ARGS_((TkDisplay * dispPtr)); +/* 12 */ +EXTERN int TkpWmSetState _ANSI_ARGS_((TkWindow * winPtr, + int state)); #endif /* UNIX */ #ifdef __WIN32__ /* 0 */ @@ -437,6 +446,10 @@ typedef struct TkIntPlatStubs { int (*tkUnixDoOneXEvent) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 6 */ void (*tkUnixSetMenubar) _ANSI_ARGS_((Tk_Window tkwin, Tk_Window menubar)); /* 7 */ int (*tkpScanWindowId) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, Window * idPtr)); /* 8 */ + void (*tkWmCleanup) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 9 */ + void (*tkSendCleanup) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 10 */ + void (*tkFreeXId) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 11 */ + int (*tkpWmSetState) _ANSI_ARGS_((TkWindow * winPtr, int state)); /* 12 */ #endif /* UNIX */ #ifdef __WIN32__ char * (*tkAlignImageData) _ANSI_ARGS_((XImage * image, int alignment, int bitOrder)); /* 0 */ @@ -652,6 +665,22 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr; #define TkpScanWindowId \ (tkIntPlatStubsPtr->tkpScanWindowId) /* 8 */ #endif +#ifndef TkWmCleanup +#define TkWmCleanup \ + (tkIntPlatStubsPtr->tkWmCleanup) /* 9 */ +#endif +#ifndef TkSendCleanup +#define TkSendCleanup \ + (tkIntPlatStubsPtr->tkSendCleanup) /* 10 */ +#endif +#ifndef TkFreeXId +#define TkFreeXId \ + (tkIntPlatStubsPtr->tkFreeXId) /* 11 */ +#endif +#ifndef TkpWmSetState +#define TkpWmSetState \ + (tkIntPlatStubsPtr->tkpWmSetState) /* 12 */ +#endif #endif /* UNIX */ #ifdef __WIN32__ #ifndef TkAlignImageData diff --git a/generic/tkListbox.c b/generic/tkListbox.c index 82eb5c4..8c73dd5 100644 --- a/generic/tkListbox.c +++ b/generic/tkListbox.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkListbox.c,v 1.22.2.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkListbox.c,v 1.22.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkPort.h" @@ -425,7 +425,7 @@ static void ListboxWorldChanged _ANSI_ARGS_(( static int NearestListboxElement _ANSI_ARGS_((Listbox *listPtr, int y)); static char * ListboxListVarProc _ANSI_ARGS_ ((ClientData clientData, - Tcl_Interp *interp, char *name1, char *name2, + Tcl_Interp *interp, char *name1, CONST char *name2, int flags)); static void MigrateHashEntries _ANSI_ARGS_ ((Tcl_HashTable *table, int first, int last, int offset)); @@ -1529,7 +1529,8 @@ ConfigureListbox(interp, listPtr, objc, objv, flags) { Tk_SavedOptions savedOptions; Tcl_Obj *oldListObj = NULL; - int oldExport; + Tcl_Obj *errorResult = NULL; + int oldExport, error; oldExport = listPtr->exportSelection; if (listPtr->listVarName != NULL) { @@ -1537,99 +1538,118 @@ ConfigureListbox(interp, listPtr, objc, objv, flags) TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ListboxListVarProc, (ClientData) listPtr); } - - if (Tk_SetOptions(interp, (char *)listPtr, - listPtr->optionTable, objc, objv, listPtr->tkwin, - &savedOptions, (int *)NULL) != TCL_OK) { - Tk_RestoreSavedOptions(&savedOptions); - return TCL_ERROR; - } - - /* - * A few options need special processing, such as setting the - * background from a 3-D border. - */ - Tk_SetBackgroundFromBorder(listPtr->tkwin, listPtr->normalBorder); + for (error = 0; error <= 1; error++) { + if (!error) { + /* + * First pass: set options to new values. + */ - if (listPtr->highlightWidth < 0) { - listPtr->highlightWidth = 0; - } - listPtr->inset = listPtr->highlightWidth + listPtr->borderWidth; + if (Tk_SetOptions(interp, (char *) listPtr, + listPtr->optionTable, objc, objv, + listPtr->tkwin, &savedOptions, (int *) NULL) != TCL_OK) { + continue; + } + } else { + /* + * Second pass: restore options to old values. + */ - /* - * Claim the selection if we've suddenly started exporting it and - * there is a selection to export. - */ + errorResult = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(errorResult); + Tk_RestoreSavedOptions(&savedOptions); + } - if (listPtr->exportSelection && !oldExport - && (listPtr->numSelected != 0)) { - Tk_OwnSelection(listPtr->tkwin, XA_PRIMARY, ListboxLostSelection, - (ClientData) listPtr); - } + /* + * A few options need special processing, such as setting the + * background from a 3-D border. + */ - - /* Verify the current status of the list var. - * PREVIOUS STATE | NEW STATE | ACTION - * ------------------+---------------+---------------------------------- - * no listvar | listvar | If listvar does not exist, create - * it and copy the internal list obj's - * content to the new var. If it does - * exist, toss the internal list obj. - * - * listvar | no listvar | Copy old listvar content to the - * internal list obj - * - * listvar | listvar | no special action - * - * no listvar | no listvar | no special action - */ - oldListObj = listPtr->listObj; - if (listPtr->listVarName != NULL) { - Tcl_Obj *listVarObj = Tcl_GetVar2Ex(interp, listPtr->listVarName, - (char *)NULL, TCL_GLOBAL_ONLY); - int dummy; - if (listVarObj == NULL) { - if (listPtr->listObj != NULL) { - listVarObj = listPtr->listObj; - } else { - listVarObj = Tcl_NewObj(); + Tk_SetBackgroundFromBorder(listPtr->tkwin, listPtr->normalBorder); + + if (listPtr->highlightWidth < 0) { + listPtr->highlightWidth = 0; + } + listPtr->inset = listPtr->highlightWidth + listPtr->borderWidth; + + /* + * Claim the selection if we've suddenly started exporting it and + * there is a selection to export. + */ + + if (listPtr->exportSelection && !oldExport + && (listPtr->numSelected != 0)) { + Tk_OwnSelection(listPtr->tkwin, XA_PRIMARY, ListboxLostSelection, + (ClientData) listPtr); + } + + /* Verify the current status of the list var. + * PREVIOUS STATE | NEW STATE | ACTION + * ---------------+------------+---------------------------------- + * no listvar | listvar | If listvar does not exist, create + * it and copy the internal list obj's + * content to the new var. If it does + * exist, toss the internal list obj. + * + * listvar | no listvar | Copy old listvar content to the + * internal list obj + * + * listvar | listvar | no special action + * + * no listvar | no listvar | no special action + */ + oldListObj = listPtr->listObj; + if (listPtr->listVarName != NULL) { + Tcl_Obj *listVarObj = Tcl_GetVar2Ex(interp, listPtr->listVarName, + (char *) NULL, TCL_GLOBAL_ONLY); + int dummy; + if (listVarObj == NULL) { + listVarObj = (oldListObj ? oldListObj : Tcl_NewObj()); + if (Tcl_SetVar2Ex(interp, listPtr->listVarName, (char *) NULL, + listVarObj, TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG) + == NULL) { + if (oldListObj == NULL) { + Tcl_DecrRefCount(listVarObj); + } + continue; + } } - if (Tcl_SetVar2Ex(interp, listPtr->listVarName, (char *)NULL, - listVarObj, TCL_GLOBAL_ONLY) == NULL) { - Tcl_DecrRefCount(listVarObj); - Tk_RestoreSavedOptions(&savedOptions); - return TCL_ERROR; + /* Make sure the object is a good list object */ + if (Tcl_ListObjLength(listPtr->interp, listVarObj, &dummy) + != TCL_OK) { + Tcl_AppendResult(listPtr->interp, + ": invalid -listvariable value", (char *) NULL); + continue; } - } - /* Make sure the object is a good list object */ - if (Tcl_ListObjLength(listPtr->interp, listVarObj, &dummy) != TCL_OK) { - Tk_RestoreSavedOptions(&savedOptions); - Tcl_AppendResult(listPtr->interp, ": invalid listvar value", - (char *)NULL); - return TCL_ERROR; - } - - listPtr->listObj = listVarObj; - Tcl_TraceVar(listPtr->interp, listPtr->listVarName, - TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, - ListboxListVarProc, (ClientData) listPtr); - } else { - if (listPtr->listObj == NULL) { + + listPtr->listObj = listVarObj; + Tcl_TraceVar(listPtr->interp, listPtr->listVarName, + TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, + ListboxListVarProc, (ClientData) listPtr); + } else if (listPtr->listObj == NULL) { listPtr->listObj = Tcl_NewObj(); } + Tcl_IncrRefCount(listPtr->listObj); + if (oldListObj != NULL) { + Tcl_DecrRefCount(oldListObj); + } + break; } - Tcl_IncrRefCount(listPtr->listObj); - if (oldListObj != NULL) { - Tcl_DecrRefCount(oldListObj); + if (!error) { + Tk_FreeSavedOptions(&savedOptions); } /* Make sure that the list length is correct */ Tcl_ListObjLength(listPtr->interp, listPtr->listObj, &listPtr->nElements); - Tk_FreeSavedOptions(&savedOptions); - ListboxWorldChanged((ClientData) listPtr); - return TCL_OK; + if (error) { + Tcl_SetObjResult(interp, errorResult); + Tcl_DecrRefCount(errorResult); + return TCL_ERROR; + } else { + ListboxWorldChanged((ClientData) listPtr); + return TCL_OK; + } } /* @@ -3204,7 +3224,7 @@ ListboxListVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about button. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Not used. */ - char *name2; /* Not used. */ + CONST char *name2; /* Not used. */ int flags; /* Information about what happened. */ { Listbox *listPtr = (Listbox *)clientData; diff --git a/generic/tkMain.c b/generic/tkMain.c index 0dec459..96f95bb 100644 --- a/generic/tkMain.c +++ b/generic/tkMain.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMain.c,v 1.9.2.2 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkMain.c,v 1.9.2.3 2002/06/10 05:38:23 wolfsuit Exp $ */ #include <ctype.h> @@ -335,8 +335,7 @@ StdinProc(clientData, mask) (void) Tcl_DStringAppend(&tsdPtr->command, Tcl_DStringValue( &tsdPtr->line), -1); - Tcl_DStringAppend(&tsdPtr->command, "\n", -1); - cmd = Tcl_DStringValue(&tsdPtr->command); + cmd = Tcl_DStringAppend(&tsdPtr->command, "\n", -1); Tcl_DStringFree(&tsdPtr->line); if (!Tcl_CommandComplete(cmd)) { gotPartial = 1; diff --git a/generic/tkMenu.c b/generic/tkMenu.c index ae6f760..249a8bf 100644 --- a/generic/tkMenu.c +++ b/generic/tkMenu.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMenu.c,v 1.13.2.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkMenu.c,v 1.13.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ /* @@ -360,7 +360,7 @@ static void MenuCmdDeletedProc _ANSI_ARGS_(( static TkMenuEntry * MenuNewEntry _ANSI_ARGS_((TkMenu *menuPtr, int index, int type)); static char * MenuVarProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, char *name1, char *name2, + Tcl_Interp *interp, char *name1, CONST char *name2, int flags)); static int MenuWidgetObjCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int objc, @@ -1536,6 +1536,11 @@ ConfigureMenu(interp, menuPtr, objc, objv) ckfree((char *) cleanupPtr->errorStructPtr); cleanupPtr->errorStructPtr = NULL; } + if (menuListPtr->errorStructPtr != NULL) { + Tk_RestoreSavedOptions(menuListPtr->errorStructPtr); + ckfree((char *) menuListPtr->errorStructPtr); + menuListPtr->errorStructPtr = NULL; + } return TCL_ERROR; } @@ -1576,18 +1581,18 @@ ConfigureMenu(interp, menuPtr, objc, objv) if ((menuListPtr->numEntries == 0) || (menuListPtr->entries[0]->type != TEAROFF_ENTRY)) { if (MenuNewEntry(menuListPtr, 0, TEAROFF_ENTRY) == NULL) { - if (menuListPtr->errorStructPtr != NULL) { - for (cleanupPtr = menuPtr->masterMenuPtr; - cleanupPtr != menuListPtr; - cleanupPtr = cleanupPtr->nextInstancePtr) { - Tk_RestoreSavedOptions(cleanupPtr->errorStructPtr); - ckfree((char *) cleanupPtr->errorStructPtr); - cleanupPtr->errorStructPtr = NULL; - } + for (cleanupPtr = menuPtr->masterMenuPtr; + cleanupPtr != menuListPtr; + cleanupPtr = cleanupPtr->nextInstancePtr) { Tk_RestoreSavedOptions(cleanupPtr->errorStructPtr); ckfree((char *) cleanupPtr->errorStructPtr); cleanupPtr->errorStructPtr = NULL; } + if (menuListPtr->errorStructPtr != NULL) { + Tk_RestoreSavedOptions(menuListPtr->errorStructPtr); + ckfree((char *) menuListPtr->errorStructPtr); + menuListPtr->errorStructPtr = NULL; + } return TCL_ERROR; } } @@ -2464,7 +2469,7 @@ MenuVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about menu entry. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* First part of variable's name. */ - char *name2; /* Second part of variable's name. */ + CONST char *name2; /* Second part of variable's name. */ int flags; /* Describes what just happened. */ { TkMenuEntry *mePtr = (TkMenuEntry *) clientData; diff --git a/generic/tkMenubutton.c b/generic/tkMenubutton.c index 18decbc..0e0213c 100644 --- a/generic/tkMenubutton.c +++ b/generic/tkMenubutton.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMenubutton.c,v 1.8.2.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkMenubutton.c,v 1.8.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkMenubutton.h" @@ -176,7 +176,7 @@ static void MenuButtonImageProc _ANSI_ARGS_((ClientData clientData, int imgHeight)); static char * MenuButtonTextVarProc _ANSI_ARGS_(( ClientData clientData, Tcl_Interp *interp, - char *name1, char *name2, int flags)); + char *name1, CONST char *name2, int flags)); static int MenuButtonWidgetObjCmd _ANSI_ARGS_(( ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); @@ -868,7 +868,7 @@ MenuButtonTextVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about button. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Name of variable. */ - char *name2; /* Second part of variable name. */ + CONST char *name2; /* Second part of variable name. */ int flags; /* Information about what happened. */ { register TkMenuButton *mbPtr = (TkMenuButton *) clientData; diff --git a/generic/tkMessage.c b/generic/tkMessage.c index 17db4bb..6ba6645 100644 --- a/generic/tkMessage.c +++ b/generic/tkMessage.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMessage.c,v 1.10.2.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkMessage.c,v 1.10.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkPort.h" @@ -176,7 +176,7 @@ static void MessageCmdDeletedProc _ANSI_ARGS_(( static void MessageEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static char * MessageTextVarProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, char *name1, char *name2, + Tcl_Interp *interp, char *name1, CONST char *name2, int flags)); static int MessageWidgetObjCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int objc, @@ -848,7 +848,7 @@ MessageTextVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about message. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Name of variable. */ - char *name2; /* Second part of variable name. */ + CONST char *name2; /* Second part of variable name. */ int flags; /* Information about what happened. */ { register Message *msgPtr = (Message *) clientData; diff --git a/generic/tkOldConfig.c b/generic/tkOldConfig.c index 24effae..5f4f7a6 100644 --- a/generic/tkOldConfig.c +++ b/generic/tkOldConfig.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkOldConfig.c,v 1.9.6.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkOldConfig.c,v 1.9.6.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkPort.h" @@ -941,6 +941,12 @@ Tk_ConfigureValue(interp, tkwin, specs, widgRec, argvName, flags) } interp->result = FormatConfigValue(interp, tkwin, specPtr, widgRec, interp->result, &interp->freeProc); + /* + * Don't let the interp->result be NULL. + */ + if (interp->result == NULL) { + interp->result = ""; + } return TCL_OK; } diff --git a/generic/tkOption.c b/generic/tkOption.c index cbcdca8..fd677fa 100644 --- a/generic/tkOption.c +++ b/generic/tkOption.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkOption.c,v 1.8.6.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkOption.c,v 1.8.6.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkPort.h" @@ -235,6 +235,8 @@ static void ExtendStacks _ANSI_ARGS_((ElArray *arrayPtr, static int GetDefaultOptions _ANSI_ARGS_((Tcl_Interp *interp, TkWindow *winPtr)); static ElArray * NewArray _ANSI_ARGS_((int numEls)); +static void OptionThreadExitProc _ANSI_ARGS_(( + ClientData clientData)); static void OptionInit _ANSI_ARGS_((TkMainInfo *mainPtr)); static int ParsePriority _ANSI_ARGS_((Tcl_Interp *interp, char *string)); @@ -558,6 +560,7 @@ Tk_GetOption(tkwin, name, className) masqClass[classNameLength] = '\0'; winClassId = Tk_GetUid(masqClass); + ckfree(masqClass); winNameId = ((TkWindow *)tkwin)->nameUid; levelPtr = &tsdPtr->levels[tsdPtr->curLevel]; @@ -1125,8 +1128,8 @@ ReadOptionFile(interp, tkwin, fileName, priority) * overallocate if we are performing CRLF translation. */ - bufferSize = Tcl_Seek(chan, 0L, SEEK_END); - (void) Tcl_Seek(chan, 0L, SEEK_SET); + bufferSize = (int) Tcl_Seek(chan, (Tcl_WideInt) 0, SEEK_END); + (void) Tcl_Seek(chan, (Tcl_WideInt) 0, SEEK_SET); if (bufferSize < 0) { Tcl_AppendResult(interp, "error seeking to end of file \"", @@ -1437,6 +1440,39 @@ ExtendStacks(arrayPtr, leaf) /* *-------------------------------------------------------------- * + * OptionThreadExitProc -- + * + * Free data structures for option handling. + * + * Results: + * None. + * + * Side effects: + * Option-related data structures get freed. + * + *-------------------------------------------------------------- + */ + +static void +OptionThreadExitProc(clientData) + ClientData clientData; /* not used */ +{ + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) + Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + + if (tsdPtr->initialized) { + int i; + for (i = 0; i < NUM_STACKS; i++) { + ckfree((char *) tsdPtr->stacks[i]); + } + ckfree((char *) tsdPtr->levels); + tsdPtr->initialized = 0; + } +} + +/* + *-------------------------------------------------------------- + * * OptionInit -- * * Initialize data structures for option handling. @@ -1484,6 +1520,7 @@ OptionInit(mainPtr) defaultMatchPtr->child.valueUid = NULL; defaultMatchPtr->priority = -1; defaultMatchPtr->flags = 0; + Tcl_CreateThreadExitHandler(OptionThreadExitProc, NULL); } /* diff --git a/generic/tkPanedWindow.c b/generic/tkPanedWindow.c index 2fd2768..6e51299 100644 --- a/generic/tkPanedWindow.c +++ b/generic/tkPanedWindow.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkPanedWindow.c,v 1.3.2.1 2002/06/10 05:07:59 wolfsuit Exp $ + * RCS: @(#) $Id: tkPanedWindow.c,v 1.3.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkPort.h" diff --git a/generic/tkScale.c b/generic/tkScale.c index a012534..33b99bd 100644 --- a/generic/tkScale.c +++ b/generic/tkScale.c @@ -18,7 +18,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkScale.c,v 1.14.2.1 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkScale.c,v 1.14.2.2 2002/06/10 05:38:23 wolfsuit Exp $ */ #include "tkPort.h" @@ -171,7 +171,7 @@ static void ScaleCmdDeletedProc _ANSI_ARGS_(( static void ScaleEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static char * ScaleVarProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, char *name1, char *name2, + Tcl_Interp *interp, char *name1, CONST char *name2, int flags)); static int ScaleWidgetObjCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int objc, @@ -1186,7 +1186,7 @@ ScaleVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about button. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Name of variable. */ - char *name2; /* Second part of variable name. */ + CONST char *name2; /* Second part of variable name. */ int flags; /* Information about what happened. */ { register TkScale *scalePtr = (TkScale *) clientData; diff --git a/generic/tkStubInit.c b/generic/tkStubInit.c index 516f4c9..ebc6851 100644 --- a/generic/tkStubInit.c +++ b/generic/tkStubInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkStubInit.c,v 1.28.2.4 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkStubInit.c,v 1.28.2.5 2002/06/10 05:38:24 wolfsuit Exp $ */ #include "tkInt.h" @@ -311,6 +311,9 @@ TkIntStubs tkIntStubs = { TkpInitKeymapInfo, /* 139 */ TkPhotoGetValidRegion, /* 140 */ TkWmStackorderToplevel, /* 141 */ + TkFocusFree, /* 142 */ + TkClipCleanup, /* 143 */ + TkGCCleanup, /* 144 */ }; TkIntPlatStubs tkIntPlatStubs = { @@ -326,6 +329,10 @@ TkIntPlatStubs tkIntPlatStubs = { TkUnixDoOneXEvent, /* 6 */ TkUnixSetMenubar, /* 7 */ TkpScanWindowId, /* 8 */ + TkWmCleanup, /* 9 */ + TkSendCleanup, /* 10 */ + TkFreeXId, /* 11 */ + TkpWmSetState, /* 12 */ #endif /* UNIX */ #ifdef __WIN32__ TkAlignImageData, /* 0 */ @@ -1082,6 +1089,7 @@ TkStubs tkStubs = { Tk_SetClassProcs, /* 242 */ Tk_SetInternalBorderEx, /* 243 */ Tk_SetMinimumRequestSize, /* 244 */ + Tk_SetCaretPos, /* 245 */ }; /* !END!: Do not edit above this line. */ diff --git a/generic/tkText.c b/generic/tkText.c index f848d21..297ba95 100644 --- a/generic/tkText.c +++ b/generic/tkText.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkText.c,v 1.18.4.3 2002/02/05 02:25:15 wolfsuit Exp $ + * RCS: @(#) $Id: tkText.c,v 1.18.4.4 2002/06/10 05:38:24 wolfsuit Exp $ */ #include "default.h" @@ -972,6 +972,16 @@ ConfigureText(interp, textPtr, argc, argv, flags) } /* + * Account for state changes that would reenable blinking cursor state. + */ + + if (textPtr->flags & GOT_FOCUS) { + Tcl_DeleteTimerHandler(textPtr->insertBlinkHandler); + textPtr->insertBlinkHandler = (Tcl_TimerToken) NULL; + TextBlinkProc((ClientData) textPtr); + } + + /* * Register the desired geometry for the window, and arrange for * the window to be redisplayed. */ diff --git a/generic/tkTextDisp.c b/generic/tkTextDisp.c index e0d1d57..77b4e4b 100644 --- a/generic/tkTextDisp.c +++ b/generic/tkTextDisp.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkTextDisp.c,v 1.9 2000/01/06 02:18:59 hobbs Exp $ + * RCS: @(#) $Id: tkTextDisp.c,v 1.9.8.1 2002/06/10 05:38:24 wolfsuit Exp $ */ #include "tkPort.h" @@ -96,6 +96,16 @@ typedef struct TextStyle { && ((s1)->sValuePtr->bgStipple == (s2)->sValuePtr->bgStipple)) /* + * The following macro is used to compare two floating-point numbers + * to within a certain degree of scale. Direct comparison fails on + * processors where the processor and memory representations of FP + * numbers of a particular precision is different (e.g. Intel) + */ + +#define FP_EQUAL_SCALE(double1, double2, scaleFactor) \ + (fabs((double1)-(double2))*((scaleFactor)+1.0) < 0.3) + +/* * The following structure describes one line of the display, which may * be either part or all of one line of the text. */ @@ -1880,6 +1890,25 @@ DisplayLineBackground(textPtr, dlPtr, prevPtr, pixmap) rightX = maxX; } if (chunkPtr->stylePtr->bgGC != None) { + /* Not visible - bail out now */ + if (rightX + xOffset <= 0) { + leftX = rightX; + continue; + } + + /* + * Trim the start position for drawing to be no further away than + * -borderWidth. The reason is that on many X servers drawing from + * -32768 (or less) to +something simply does not display + * correctly. [Patch #541999] + */ + if ((leftX + xOffset) < -(sValuePtr->borderWidth)) { + leftX = -sValuePtr->borderWidth - xOffset; + } + if ((rightX - leftX) > 32767) { + rightX = leftX + 32767; + } + XFillRectangle(display, pixmap, chunkPtr->stylePtr->bgGC, leftX + xOffset, 0, (unsigned int) (rightX - leftX), (unsigned int) dlPtr->height); @@ -3865,7 +3894,7 @@ GetXView(interp, textPtr, report) * scrollbar if it has changed. */ { TextDInfo *dInfoPtr = textPtr->dInfoPtr; - char buffer[TCL_DOUBLE_SPACE * 2]; + char buffer[TCL_DOUBLE_SPACE * 2 + 1]; double first, last; int code; @@ -3886,7 +3915,8 @@ GetXView(interp, textPtr, report) Tcl_SetResult(interp, buffer, TCL_VOLATILE); return; } - if ((first == dInfoPtr->xScrollFirst) && (last == dInfoPtr->xScrollLast)) { + if (FP_EQUAL_SCALE(first, dInfoPtr->xScrollFirst, dInfoPtr->maxLength) && + FP_EQUAL_SCALE(last, dInfoPtr->xScrollLast, dInfoPtr->maxLength)) { return; } dInfoPtr->xScrollFirst = first; @@ -3936,7 +3966,7 @@ GetYView(interp, textPtr, report) * scrollbar if it has changed. */ { TextDInfo *dInfoPtr = textPtr->dInfoPtr; - char buffer[TCL_DOUBLE_SPACE * 2]; + char buffer[TCL_DOUBLE_SPACE * 2 + 1]; double first, last; DLine *dlPtr; int totalLines, code, count; @@ -3971,7 +4001,8 @@ GetYView(interp, textPtr, report) Tcl_SetResult(interp, buffer, TCL_VOLATILE); return; } - if ((first == dInfoPtr->yScrollFirst) && (last == dInfoPtr->yScrollLast)) { + if (FP_EQUAL_SCALE(first, dInfoPtr->yScrollFirst, totalLines) && + FP_EQUAL_SCALE(last, dInfoPtr->yScrollLast, totalLines)) { return; } dInfoPtr->yScrollFirst = first; diff --git a/generic/tkTextMark.c b/generic/tkTextMark.c index ff3ef44..31d4f85 100644 --- a/generic/tkTextMark.c +++ b/generic/tkTextMark.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkTextMark.c,v 1.4 1999/12/14 06:52:33 hobbs Exp $ + * RCS: @(#) $Id: tkTextMark.c,v 1.4.8.1 2002/06/10 05:38:24 wolfsuit Exp $ */ #include "tkInt.h" @@ -526,12 +526,16 @@ TkTextInsertDisplayProc(chunkPtr, x, y, height, baseline, display, dst, screenY) if ((x + halfWidth) < 0) { /* - * The insertion cursor is off-screen. Just return. + * The insertion cursor is off-screen. + * Indicate caret at 0,0 and return. */ + Tk_SetCaretPos(textPtr->tkwin, 0, 0, height); return; } + Tk_SetCaretPos(textPtr->tkwin, x - halfWidth, screenY, height); + /* * As a special hack to keep the cursor visible on mono displays * (or anywhere else that the selection and insertion cursors @@ -542,12 +546,12 @@ TkTextInsertDisplayProc(chunkPtr, x, y, height, baseline, display, dst, screenY) if (textPtr->flags & INSERT_ON) { Tk_Fill3DRectangle(textPtr->tkwin, dst, textPtr->insertBorder, - x - textPtr->insertWidth/2, y, textPtr->insertWidth, - height, textPtr->insertBorderWidth, TK_RELIEF_RAISED); + x - halfWidth, y, textPtr->insertWidth, height, + textPtr->insertBorderWidth, TK_RELIEF_RAISED); } else if (textPtr->selBorder == textPtr->insertBorder) { Tk_Fill3DRectangle(textPtr->tkwin, dst, textPtr->border, - x - textPtr->insertWidth/2, y, textPtr->insertWidth, - height, 0, TK_RELIEF_FLAT); + x - halfWidth, y, textPtr->insertWidth, height, + 0, TK_RELIEF_FLAT); } } diff --git a/generic/tkWindow.c b/generic/tkWindow.c index 0101778..6298cc1 100644 --- a/generic/tkWindow.c +++ b/generic/tkWindow.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWindow.c,v 1.39.2.3 2002/02/05 02:25:16 wolfsuit Exp $ + * RCS: @(#) $Id: tkWindow.c,v 1.39.2.4 2002/06/10 05:38:24 wolfsuit Exp $ */ #include "tkPort.h" @@ -143,6 +143,7 @@ static TkCmd commands[] = { {"listbox", NULL, Tk_ListboxObjCmd, 1, 0}, {"menubutton", NULL, Tk_MenubuttonObjCmd, 1, 0}, {"message", NULL, Tk_MessageObjCmd, 1, 0}, + {"panedwindow", NULL, Tk_PanedWindowObjCmd, 1, 0}, {"radiobutton", NULL, Tk_RadiobuttonObjCmd, 1, 0}, {"scale", NULL, Tk_ScaleObjCmd, 1, 0}, {"scrollbar", Tk_ScrollbarCmd, NULL, 1, 1}, @@ -211,12 +212,64 @@ static int Initialize _ANSI_ARGS_((Tcl_Interp *interp)); static int NameWindow _ANSI_ARGS_((Tcl_Interp *interp, TkWindow *winPtr, TkWindow *parentPtr, char *name)); -static void OpenIM _ANSI_ARGS_((TkDisplay *dispPtr)); static void UnlinkWindow _ANSI_ARGS_((TkWindow *winPtr)); /* *---------------------------------------------------------------------- * + * TkCloseDisplay -- + * Closing the display can lead to order of deletion problems. + * We defer it until exit handling for Mac/Win, but since Unix can + * use many displays, try and clean it up as best as possible. + * + * Results: + * None. + * + * Side effects: + * Resources associated with the display will be free. + * The display may not be referenced at all after this. + *---------------------------------------------------------------------- + */ + +static void +TkCloseDisplay(TkDisplay *dispPtr) +{ + TkClipCleanup(dispPtr); + + if (dispPtr->name != NULL) { + ckfree(dispPtr->name); + } + + Tcl_DeleteHashTable(&dispPtr->winTable); + + if (dispPtr->atomInit) { + Tcl_DeleteHashTable(&dispPtr->nameTable); + Tcl_DeleteHashTable(&dispPtr->atomTable); + dispPtr->atomInit = 0; + } + + if (dispPtr->errorPtr != NULL) { + TkErrorHandler *errorPtr; + for (errorPtr = dispPtr->errorPtr; + errorPtr != NULL; + errorPtr = dispPtr->errorPtr) { + dispPtr->errorPtr = errorPtr->nextPtr; + ckfree((char *) errorPtr); + } + } + + TkGCCleanup(dispPtr); + + TkpCloseDisplay(dispPtr); + + /* + * There is more to clean up, we leave it at this for the time being. + */ +} + +/* + *---------------------------------------------------------------------- + * * CreateTopLevelWindow -- * * Make a new window that will be at top-level (its parent will @@ -397,83 +450,34 @@ GetScreen(interp, screenName, screenPtr) * then open a new connection. */ - for (dispPtr = TkGetDisplayList(); ; dispPtr = dispPtr->nextPtr) { + for (dispPtr = tsdPtr->displayList; ; dispPtr = dispPtr->nextPtr) { if (dispPtr == NULL) { + /* + * The private function zeros out dispPtr when it is created, + * so we only need to initialize the non-zero items. + */ dispPtr = TkpOpenDisplay(screenName); if (dispPtr == NULL) { Tcl_AppendResult(interp, "couldn't connect to display \"", screenName, "\"", (char *) NULL); return (TkDisplay *) NULL; } - dispPtr->nextPtr = TkGetDisplayList(); - dispPtr->name = (char *) ckalloc((unsigned) (length+1)); + dispPtr->nextPtr = tsdPtr->displayList; /* TkGetDisplayList(); */ + tsdPtr->displayList = dispPtr; + dispPtr->lastEventTime = CurrentTime; - dispPtr->borderInit = 0; - dispPtr->atomInit = 0; dispPtr->bindInfoStale = 1; - dispPtr->modeModMask = 0; - dispPtr->metaModMask = 0; - dispPtr->altModMask = 0; - dispPtr->numModKeyCodes = 0; - dispPtr->modKeyCodes = NULL; - dispPtr->bitmapInit = 0; - dispPtr->bitmapAutoNumber = 0; - dispPtr->numIdSearches = 0; - dispPtr->numSlowSearches = 0; - dispPtr->colorInit = 0; - dispPtr->stressPtr = NULL; - dispPtr->cursorInit = 0; - dispPtr->cursorString[0] = '\0'; dispPtr->cursorFont = None; - dispPtr->errorPtr = NULL; - dispPtr->deleteCount = 0; - dispPtr->delayedMotionPtr = NULL; - dispPtr->focusDebug = 0; - dispPtr->implicitWinPtr = NULL; - dispPtr->focusPtr = NULL; - dispPtr->gcInit = 0; - dispPtr->geomInit = 0; - dispPtr->uidInit = 0; - dispPtr->grabWinPtr = NULL; - dispPtr->eventualGrabWinPtr = NULL; - dispPtr->buttonWinPtr = NULL; - dispPtr->serverWinPtr = NULL; - dispPtr->firstGrabEventPtr = NULL; - dispPtr->lastGrabEventPtr = NULL; - dispPtr->grabFlags = 0; - dispPtr->mouseButtonState = 0; - dispPtr->warpInProgress = 0; dispPtr->warpWindow = None; - dispPtr->warpX = 0; - dispPtr->warpY = 0; - dispPtr->gridInit = 0; - dispPtr->imageId = 0; - dispPtr->packInit = 0; - dispPtr->placeInit = 0; - dispPtr->selectionInfoPtr = NULL; dispPtr->multipleAtom = None; - dispPtr->clipWindow = NULL; - dispPtr->clipboardActive = 0; - dispPtr->clipboardAppPtr = NULL; - dispPtr->clipTargetPtr = NULL; - dispPtr->commTkwin = NULL; - dispPtr->wmTracing = 0; - dispPtr->firstWmPtr = NULL; - dispPtr->foregroundWmPtr = NULL; - dispPtr->destroyCount = 0; - dispPtr->lastDestroyRequest = 0; - dispPtr->cmapPtr = NULL; + Tcl_InitHashTable(&dispPtr->winTable, TCL_ONE_WORD_KEYS); - dispPtr->refCount = 0; + dispPtr->name = (char *) ckalloc((unsigned) (length+1)); strncpy(dispPtr->name, screenName, length); dispPtr->name[length] = '\0'; - dispPtr->useInputMethods = 0; - OpenIM(dispPtr); - TkInitXId(dispPtr); - dispPtr->deletionEpoch = 0L; - tsdPtr->displayList = dispPtr; + TkInitXId(dispPtr); break; } if ((strncmp(dispPtr->name, screenName, length) == 0) @@ -1429,6 +1433,7 @@ Tk_DestroyWindow(tkwin) TkBindFree(winPtr->mainPtr); TkDeleteAllImages(winPtr->mainPtr); TkFontPkgFree(winPtr->mainPtr); + TkFocusFree(winPtr->mainPtr); /* * When embedding Tk into other applications, make sure @@ -1438,7 +1443,7 @@ Tk_DestroyWindow(tkwin) */ if (winPtr->flags & TK_EMBEDDED) { - XSync(winPtr->display,False) ; + XSync(winPtr->display, False); } ckfree((char *) winPtr->mainPtr); @@ -1446,15 +1451,22 @@ Tk_DestroyWindow(tkwin) * If no other applications are using the display, close the * display now and relinquish its data structures. */ - + +#if !defined(WIN32) && !defined(MAC_TCL) && defined(NOT_YET) if (dispPtr->refCount <= 0) { -#ifdef NOT_YET /* * I have disabled this code because on Windows there are * still order dependencies in close-down. All displays * and resources will get closed down properly anyway at - * exit, through the exit handler. + * exit, through the exit handler. -- jyl */ + /* + * Ideally this should be enabled, as unix Tk can use multiple + * displays. However, there are order issues still, as well + * as the handling of queued events and such that must be + * addressed before this can be enabled. The current cleanup + * works except for send event issues. -- hobbs 04/2002 + */ TkDisplay *theDispPtr, *backDispPtr; @@ -1462,7 +1474,7 @@ Tk_DestroyWindow(tkwin) * Splice this display out of the list of displays. */ - for (theDispPtr = displayList, backDispPtr = NULL; + for (theDispPtr = tsdPtr->displayList, backDispPtr = NULL; (theDispPtr != winPtr->dispPtr) && (theDispPtr != NULL); theDispPtr = theDispPtr->nextPtr) { @@ -1472,36 +1484,24 @@ Tk_DestroyWindow(tkwin) panic("could not find display to close!"); } if (backDispPtr == NULL) { - displayList = theDispPtr->nextPtr; + tsdPtr->displayList = theDispPtr->nextPtr; } else { backDispPtr->nextPtr = theDispPtr->nextPtr; } - - /* - * Found and spliced it out, now actually do the cleanup. - */ - - if (dispPtr->name != NULL) { - ckfree(dispPtr->name); - } - - Tcl_DeleteHashTable(&(dispPtr->winTable)); - - /* - * Cannot yet close the display because we still have - * order of deletion problems. Defer until exit handling - * instead. At that time, the display will cleanly shut - * down (hopefully..). (JYL) - */ - TkpCloseDisplay(dispPtr); + /* + * Calling XSync creates X server traffic, but addresses a + * focus issue on close (but not the send issue). -- hobbs + XSync(dispPtr->display, True); + */ /* - * There is lots more to clean up, we leave it at this for - * the time being. + * Found and spliced it out, now actually do the cleanup. */ -#endif + + TkCloseDisplay(dispPtr); } +#endif } } Tcl_EventuallyFree((ClientData) winPtr, TCL_DYNAMIC); @@ -1616,9 +1616,6 @@ Tk_MakeWindowExist(tkwin) Tcl_SetHashValue(hPtr, winPtr); winPtr->dirtyAtts = 0; winPtr->dirtyChanges = 0; -#ifdef TK_USE_INPUT_METHODS - winPtr->inputContext = NULL; -#endif /* TK_USE_INPUT_METHODS */ if (!(winPtr->flags & TK_TOP_LEVEL)) { /* @@ -1665,7 +1662,7 @@ Tk_MakeWindowExist(tkwin) */ if ((winPtr->flags & TK_NEED_CONFIG_NOTIFY) - && !(winPtr->flags & TK_ALREADY_DEAD)){ + && !(winPtr->flags & TK_ALREADY_DEAD)) { winPtr->flags &= ~TK_NEED_CONFIG_NOTIFY; TkDoConfigureNotify(winPtr); } @@ -2502,8 +2499,18 @@ Tk_MainWindow(interp) * reporting also. */ { TkMainInfo *mainPtr; - ThreadSpecificData *tsdPtr = (ThreadSpecificData *) - Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + ThreadSpecificData *tsdPtr; + + if (interp == NULL) { + return NULL; + } +#ifdef USE_TCL_STUBS + if (tclStubsPtr == NULL) { + return NULL; + } +#endif + tsdPtr = (ThreadSpecificData *) + Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); for (mainPtr = tsdPtr->mainWindowList; mainPtr != NULL; mainPtr = mainPtr->nextPtr) { @@ -2543,70 +2550,6 @@ Tk_StrictMotif(tkwin) return ((TkWindow *) tkwin)->mainPtr->strictMotif; } -/* - *-------------------------------------------------------------- - * - * OpenIM -- - * - * Tries to open an X input method, associated with the - * given display. Right now we can only deal with a bare-bones - * input style: no preedit, and no status. - * - * Results: - * Stores the input method in dispPtr->inputMethod; if there isn't - * a suitable input method, then NULL is stored in dispPtr->inputMethod. - * - * Side effects: - * An input method gets opened. - * - *-------------------------------------------------------------- - */ - -static void -OpenIM(dispPtr) - TkDisplay *dispPtr; /* Tk's structure for the display. */ -{ -#ifndef TK_USE_INPUT_METHODS - return; -#else - unsigned short i; - XIMStyles *stylePtr; - char *modifier_list; - - if ((modifier_list = XSetLocaleModifiers("")) == NULL) { - goto error; - } - - dispPtr->inputMethod = XOpenIM(dispPtr->display, NULL, NULL, NULL); - if (dispPtr->inputMethod == NULL) { - return; - } - - if ((XGetIMValues(dispPtr->inputMethod, XNQueryInputStyle, &stylePtr, - NULL) != NULL) || (stylePtr == NULL)) { - goto error; - } - for (i = 0; i < stylePtr->count_styles; i++) { - if (stylePtr->supported_styles[i] - == (XIMPreeditNothing|XIMStatusNothing)) { - XFree(stylePtr); - return; - } - } - XFree(stylePtr); - - error: - - /* - * Should close the input method, but this causes core dumps on some - * systems (e.g. Solaris 2.3 as of 1/6/95). - * XCloseIM(dispPtr->inputMethod); - */ - dispPtr->inputMethod = NULL; - return; -#endif /* TK_USE_INPUT_METHODS */ -} - /* *---------------------------------------------------------------------- * @@ -2627,8 +2570,16 @@ OpenIM(dispPtr) int Tk_GetNumMainWindows() { - ThreadSpecificData *tsdPtr = (ThreadSpecificData *) - Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + ThreadSpecificData *tsdPtr; + +#ifdef USE_TCL_STUBS + if (tclStubsPtr == NULL) { + return 0; + } +#endif + + tsdPtr = (ThreadSpecificData *) + Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); return tsdPtr->numMainWindows; } @@ -2654,11 +2605,11 @@ static void DeleteWindowsExitProc(clientData) ClientData clientData; /* Not used. */ { - TkDisplay *displayPtr, *nextPtr; + TkDisplay *dispPtr, *nextPtr; Tcl_Interp *interp; ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - + while (tsdPtr->mainWindowList != NULL) { /* * We must protect the interpreter while deleting the window, @@ -2672,21 +2623,17 @@ DeleteWindowsExitProc(clientData) Tk_DestroyWindow((Tk_Window) tsdPtr->mainWindowList->winPtr); Tcl_Release((ClientData) interp); } - - displayPtr = tsdPtr->displayList; - tsdPtr->displayList = NULL; - + /* * Iterate destroying the displays until no more displays remain. * It is possible for displays to get recreated during exit by any * code that calls GetScreen, so we must destroy these new displays * as well as the old ones. */ - - for (displayPtr = tsdPtr->displayList; - displayPtr != NULL; - displayPtr = tsdPtr->displayList) { + for (dispPtr = tsdPtr->displayList; + dispPtr != NULL; + dispPtr = tsdPtr->displayList) { /* * Now iterate over the current list of open displays, and first * set the global pointer to NULL so we will be able to notice if @@ -2695,18 +2642,14 @@ DeleteWindowsExitProc(clientData) * the old display as it is being destroyed, when it wants to see * if it needs to dispatch a message. */ - - for (tsdPtr->displayList = NULL; displayPtr != NULL; - displayPtr = nextPtr) { - nextPtr = displayPtr->nextPtr; - if (displayPtr->name != (char *) NULL) { - ckfree(displayPtr->name); - } - Tcl_DeleteHashTable(&(displayPtr->winTable)); - TkpCloseDisplay(displayPtr); + + for (tsdPtr->displayList = NULL; dispPtr != NULL; + dispPtr = nextPtr) { + nextPtr = dispPtr->nextPtr; + TkCloseDisplay(dispPtr); } } - + tsdPtr->numMainWindows = 0; tsdPtr->mainWindowList = NULL; tsdPtr->initialized = 0; diff --git a/library/bgerror.tcl b/library/bgerror.tcl index c1f5364..73d98fa 100644 --- a/library/bgerror.tcl +++ b/library/bgerror.tcl @@ -9,16 +9,20 @@ # Copyright (c) 1998-2000 by Ajuba Solutions. # All rights reserved. # -# RCS: @(#) $Id: bgerror.tcl,v 1.17.2.2 2001/10/17 06:51:28 wolfsuit Exp $ -# $Id: bgerror.tcl,v 1.17.2.2 2001/10/17 06:51:28 wolfsuit Exp $ - -option add *ErrorDialog.function.text [::msgcat::mc "Save To Log"] \ - widgetDefault -option add *ErrorDialog.function.command "::tk::dialog::error::saveToLog" - -namespace eval ::tk {} -namespace eval ::tk::dialog {} -namespace eval ::tk::dialog::error {} +# RCS: @(#) $Id: bgerror.tcl,v 1.17.2.3 2002/06/10 05:38:24 wolfsuit Exp $ +# $Id: bgerror.tcl,v 1.17.2.3 2002/06/10 05:38:24 wolfsuit Exp $ + +namespace eval ::tk { + namespace eval dialog { + namespace eval error { + namespace import ::tk::msgcat::* + namespace export bgerror + option add *ErrorDialog.function.text [mc "Save To Log"] \ + widgetDefault + option add *ErrorDialog.function.command [namespace code SaveToLog] + } + } +} proc ::tk::dialog::error::Return {} { variable button @@ -29,34 +33,30 @@ proc ::tk::dialog::error::Return {} { set button 0 } -proc ::tk::dialog::error::details {} { +proc ::tk::dialog::error::Details {} { set w .bgerrorDialog set caption [option get $w.function text {}] set command [option get $w.function command {}] - if { [string equal $caption ""] || [string equal $command ""] } { + if { ($caption eq "") || ($command eq "") } { grid forget $w.function } - $w.function configure -text $caption \ - -command [list ::tk::dialog::error::evalFunction $command] + $w.function configure -text $caption -command \ + "$command [list [.bgerrorDialog.top.info.text get 1.0 end]]" grid $w.top.info - -sticky nsew -padx 3m -pady 3m } -proc ::tk::dialog::error::evalFunction {cmd} { - uplevel \#0 [list $cmd [.bgerrorDialog.top.info.text get 1.0 end]] -} - -proc ::tk::dialog::error::saveToLog {text} { - if { [string equal $::tcl_platform(platform) "windows"] } { - set allFiles "*.*" +proc ::tk::dialog::error::SaveToLog {text} { + if { $::tcl_platform(platform) eq "windows" } { + set allFiles *.* } else { - set allFiles "*" + set allFiles * } set types [list \ - [list [::msgcat::mc "Log Files"] .log] \ - [list [::msgcat::mc "Text Files"] .txt] \ - [list [::msgcat::mc "All Files"] $allFiles] \ + [list [mc "Log Files"] .log] \ + [list [mc "Text Files"] .txt] \ + [list [mc "All Files"] $allFiles] \ ] - set filename [tk_getSaveFile -title [::msgcat::mc "Select Log File"] \ + set filename [tk_getSaveFile -title [mc "Select Log File"] \ -filetypes $types -defaultextension .log -parent .bgerrorDialog] if {![string length $filename]} { return @@ -67,13 +67,13 @@ proc ::tk::dialog::error::saveToLog {text} { } proc ::tk::dialog::error::Destroy {w} { - if {".bgerrorDialog" == "$w"} { + if {$w eq ".bgerrorDialog"} { variable button set button -1 } } -# ::bgerror -- +# ::tk::dialog::error::bgerror -- # This is the default version of bgerror. # It tries to execute tkerror, if that fails it posts a dialog box containing # the error message and gives the user a chance to ask to see a stack @@ -81,27 +81,27 @@ proc ::tk::dialog::error::Destroy {w} { # Arguments: # err - The error message. -proc ::bgerror err { +proc ::tk::dialog::error::bgerror err { global errorInfo tcl_platform - set butvar ::tk::dialog::error::button + variable button set info $errorInfo - set ret [catch {tkerror $err} msg]; + set ret [catch {::tkerror $err} msg]; if {$ret != 1} {return -code $ret $msg} # Ok the application's tkerror either failed or was not found # we use the default dialog then : - if {[string equal $tcl_platform(platform) "macintosh"] - || [string equal $tcl_platform(windowingsystem) "aqua"]} { - set ok [::msgcat::mc "Ok"] + if {($tcl_platform(platform) eq "macintosh") + || ($tcl_platform(windowingsystem) eq "aqua")} { + set ok [mc Ok] set messageFont system - set textRelief "flat" + set textRelief flat set textHilight 0 } else { - set ok [::msgcat::mc "OK"] + set ok [mc OK] set messageFont {Times -18} - set textRelief "sunken" + set textRelief sunken set textHilight 1 } @@ -111,7 +111,7 @@ proc ::bgerror err { # which one of those conditions is met. set displayedErr "" set lines 0 - foreach line [split $err "\n"] { + foreach line [split $err \n] { if { [string length $line] > 30 } { append displayedErr "[string range $line 0 29]..." break @@ -126,10 +126,10 @@ proc ::bgerror err { } set w .bgerrorDialog - set title [::msgcat::mc "Application Error"] - set text [::msgcat::mc "Error: %1\$s" $err] - set buttons [list ok $ok dismiss [::msgcat::mc "Skip Messages"] \ - function [::msgcat::mc "Details >>"]] + set title [mc "Application Error"] + set text [mc {Error: %1$s} $err] + set buttons [list ok $ok dismiss [mc "Skip Messages"] \ + function [mc "Details >>"]] # 1. Create the top-level window and divide it into top # and bottom parts. @@ -143,14 +143,14 @@ proc ::bgerror err { # The following, though surprising, works. wm transient .bgerrorDialog .bgerrorDialog - if {[string equal $tcl_platform(platform) "macintosh"] - || [string equal $tcl_platform(windowingsystem) "aqua"]} { + if {($tcl_platform(platform) eq "macintosh") + || ($tcl_platform(windowingsystem) eq "aqua")} { ::tk::unsupported::MacWindowStyle style .bgerrorDialog dBoxProc } frame .bgerrorDialog.bot frame .bgerrorDialog.top - if {[string equal $tcl_platform(windowingsystem) "x11"]} { + if {$tcl_platform(windowingsystem) eq "x11"} { .bgerrorDialog.bot configure -relief raised -bd 1 .bgerrorDialog.top configure -relief raised -bd 1 } @@ -160,7 +160,7 @@ proc ::bgerror err { set W [frame $w.top.info] text $W.text \ -bd 2 \ - -yscrollcommand "$W.scroll set" \ + -yscrollcommand [list $W.scroll set]\ -setgrid true \ -width 40 \ -height 10 \ @@ -169,7 +169,7 @@ proc ::bgerror err { -highlightthickness $textHilight \ -wrap char - scrollbar $W.scroll -relief sunken -command "$W.text yview" + scrollbar $W.scroll -relief sunken -command [list $W.text yview] pack $W.scroll -side right -fill y pack $W.text -side left -expand yes -fill both $W.text insert 0.0 "$err\n$info" @@ -180,8 +180,8 @@ proc ::bgerror err { # 2. Fill the top part with bitmap and message label .bgerrorDialog.msg -justify left -text $text -font $messageFont - if {[string equal $tcl_platform(platform) "macintosh"] - || [string equal $tcl_platform(windowingsystem) "aqua"]} { + if {($tcl_platform(platform) eq "macintosh") + || ($tcl_platform(windowingsystem) eq "aqua")} { # On the Macintosh, use the stop bitmap label .bgerrorDialog.bitmap -bitmap stop } else { @@ -207,7 +207,7 @@ proc ::bgerror err { button .bgerrorDialog.$name \ -text $caption \ -default normal \ - -command "set $butvar $i" + -command [namespace code "set button $i"] grid .bgerrorDialog.$name \ -in .bgerrorDialog.bot \ -column $i \ @@ -216,9 +216,9 @@ proc ::bgerror err { -padx 10 grid columnconfigure .bgerrorDialog.bot $i -weight 1 # We boost the size of some Mac buttons for l&f - if {[string equal $tcl_platform(platform) "macintosh"] - || [string equal $tcl_platform(windowingsystem) "aqua"]} { - if {($name == "ok") || ($name == "dismiss")} { + if {($tcl_platform(platform) eq "macintosh") + || ($tcl_platform(windowingsystem) eq "aqua")} { + if {($name eq "ok") || ($name eq "dismiss")} { grid columnconfigure .bgerrorDialog.bot $i -minsize 79 } } @@ -227,11 +227,9 @@ proc ::bgerror err { # The "OK" button is the default for this dialog. .bgerrorDialog.ok configure -default active - set ::tk::dialog::error::curh 0 - bind .bgerrorDialog <Return> {::tk::dialog::error::Return} - bind .bgerrorDialog <Destroy> {::tk::dialog::error::Destroy %W} - .bgerrorDialog.function configure \ - -command {::tk::dialog::error::details } + bind .bgerrorDialog <Return> [namespace code Return] + bind .bgerrorDialog <Destroy> [namespace code [list Destroy %W]] + .bgerrorDialog.function configure -command [namespace code Details] # 6. Withdraw the window, then update all the geometry information # so we know how big it wants to be, then center the window in the @@ -266,19 +264,26 @@ proc ::bgerror err { # may take the focus away so we can't redirect it. Finally, # restore any grab that was in effect. - vwait $butvar - set button $::tk::dialog::error::button; # Save a copy... + vwait [namespace which -variable button] + set copy $button; # Save a copy... catch {focus $oldFocus} catch {destroy .bgerrorDialog} - if {$oldGrab != ""} { - if {$grabStatus == "global"} { + if {$oldGrab ne ""} { + if {$grabStatus eq "global"} { grab -global $oldGrab } else { grab $oldGrab } } - if {$button == 1} { + if {$copy == 1} { return -code break } } + +namespace eval :: { + # Fool the indexer + proc bgerror err {} + rename bgerror {} + namespace import ::tk::dialog::error::bgerror +} diff --git a/library/button.tcl b/library/button.tcl index 7f96958..ece4b83 100644 --- a/library/button.tcl +++ b/library/button.tcl @@ -4,7 +4,7 @@ # checkbutton, and radiobutton widgets and provides procedures # that help in implementing those bindings. # -# RCS: @(#) $Id: button.tcl,v 1.11.2.2 2002/02/05 02:25:16 wolfsuit Exp $ +# RCS: @(#) $Id: button.tcl,v 1.11.2.3 2002/06/10 05:38:24 wolfsuit Exp $ # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -150,7 +150,7 @@ proc ::tk::ButtonEnter w { if {[string equal $Priv(buttonWindow) $w]} { $w configure -state active -relief sunken - } elseif { [string compare [$w cget -overrelief] ""] } { + } elseif {[$w cget -overrelief] ne ""} { set Priv(relief) [$w cget -relief] $w configure -relief [$w cget -overrelief] } @@ -177,8 +177,8 @@ proc ::tk::ButtonLeave w { # Restore the original button relief if the mouse button is down # or there is an -overrelief value. - if {[string equal $Priv(buttonWindow) $w] || \ - [string compare [$w cget -overrelief] ""] } { + if {[info exists Priv(relief)] && (($Priv(buttonWindow) eq $w) || \ + ([$w cget -overrelief] ne ""))} { $w configure -relief $Priv(relief) } @@ -328,7 +328,7 @@ proc ::tk::ButtonEnter {w} { if {[string equal $Priv(buttonWindow) $w]} { $w configure -state active -relief sunken - } elseif { [string compare [$w cget -overrelief] ""] } { + } elseif {[$w cget -overrelief] ne ""} { set Priv(relief) [$w cget -relief] $w configure -relief [$w cget -overrelief] } @@ -352,12 +352,12 @@ proc ::tk::ButtonLeave w { if {[string compare [$w cget -state] "disabled"]} { $w configure -state normal } - + # Restore the original button relief if the mouse button is down # or there is an -overrelief value. - if {[string equal $Priv(buttonWindow) $w] || \ - [string compare [$w cget -overrelief] ""] } { + if {[info exists Priv(relief)] && (($Priv(buttonWindow) eq $w) || \ + ([$w cget -overrelief] ne ""))} { $w configure -relief $Priv(relief) } @@ -459,7 +459,7 @@ proc ::tk::ButtonEnter {w} { if {[string compare [$w cget -state] "disabled"]} { if {[string equal $w $Priv(buttonWindow)]} { $w configure -state active - } elseif { [string compare [$w cget -overrelief] ""] } { + } elseif {[$w cget -overrelief] ne ""} { set Priv(relief) [$w cget -relief] $w configure -relief [$w cget -overrelief] } @@ -482,7 +482,8 @@ proc ::tk::ButtonLeave w { if {[string equal $w $Priv(buttonWindow)]} { $w configure -state normal } - if { [string compare [$w cget -overrelief] ""] } { + if {[info exists Priv(relief)] && (($Priv(buttonWindow) eq $w) || \ + ([$w cget -overrelief] ne ""))} { $w configure -relief $Priv(relief) } set Priv(window) "" diff --git a/library/choosedir.tcl b/library/choosedir.tcl index 8f1df99..bef233b 100644 --- a/library/choosedir.tcl +++ b/library/choosedir.tcl @@ -5,7 +5,7 @@ # Copyright (c) 1998-2000 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: choosedir.tcl,v 1.11 2001/09/17 14:12:18 dkf Exp $ +# RCS: @(#) $Id: choosedir.tcl,v 1.11.2.1 2002/06/10 05:38:24 wolfsuit Exp $ # Make sure the tk::dialog namespace, in which all dialogs should live, exists namespace eval ::tk::dialog {} @@ -13,6 +13,7 @@ namespace eval ::tk::dialog::file {} # Make the chooseDir namespace inside the dialog namespace namespace eval ::tk::dialog::file::chooseDir { + namespace import ::tk::msgcat::* } # ::tk::dialog::file::chooseDir:: -- @@ -135,9 +136,9 @@ proc ::tk::dialog::file::chooseDir::Config {dataName argList} { tclParseConfigSpec ::tk::dialog::file::$dataName $specs "" $argList if {$data(-title) == ""} { - set data(-title) "[::msgcat::mc "Choose Directory"]" + set data(-title) "[mc "Choose Directory"]" } - + # Stub out the -multiple value for the dialog; it doesn't make sense for # choose directory dialogs, but we have to have something there because we # share so much code with the file dialogs. diff --git a/library/clrpick.tcl b/library/clrpick.tcl index 880ca55..1e51867 100644 --- a/library/clrpick.tcl +++ b/library/clrpick.tcl @@ -3,7 +3,7 @@ # Color selection dialog for platforms that do not support a # standard color selection dialog. # -# RCS: @(#) $Id: clrpick.tcl,v 1.13.2.1 2002/02/05 02:25:16 wolfsuit Exp $ +# RCS: @(#) $Id: clrpick.tcl,v 1.13.2.2 2002/06/10 05:38:24 wolfsuit Exp $ # # Copyright (c) 1996 Sun Microsystems, Inc. # @@ -20,7 +20,9 @@ # Make sure namespaces exist namespace eval ::tk {} namespace eval ::tk::dialog {} -namespace eval ::tk::dialog::color {} +namespace eval ::tk::dialog::color { + namespace import ::tk::msgcat::* +} # ::tk::dialog::color:: -- # @@ -170,7 +172,7 @@ proc ::tk::dialog::color::Config {dataName argList} { set specs [list \ [list -initialcolor "" "" $defaultColor] \ [list -parent "" "" "."] \ - [list -title "" "" [::msgcat::mc "Color"]] \ + [list -title "" "" [mc "Color"]] \ ] # 2: parse the arguments @@ -203,12 +205,12 @@ proc ::tk::dialog::color::BuildDialog {w} { # StripsFrame contains the colorstrips and the individual RGB entries set stripsFrame [frame $topFrame.colorStrip] - set maxWidth [::msgcat::mcmax Red Green Blue] + set maxWidth [mcmax Red Green Blue] set maxWidth [expr {$maxWidth<6?6:$maxWidth}] set colorList [list \ - red [::msgcat::mc "Red"] \ - green [::msgcat::mc "Green"] \ - blue [::msgcat::mc "Blue"] \ + red [mc "Red"] \ + green [mc "Green"] \ + blue [mc "Blue"] \ ] foreach {color l} $colorList { # each f frame contains an [R|G|B] entry and the equiv. color strip. @@ -263,7 +265,7 @@ proc ::tk::dialog::color::BuildDialog {w} { # selected color # set selFrame [frame $topFrame.sel] - set lab [label $selFrame.lab -text [::msgcat::mc "Selection:"] \ + set lab [label $selFrame.lab -text [mc "Selection:"] \ -under 0 -anchor sw] set ent [entry $selFrame.ent \ -textvariable ::tk::dialog::color::[winfo name $w](selection) \ @@ -283,12 +285,12 @@ proc ::tk::dialog::color::BuildDialog {w} { # the botFrame frame contains the buttons # set botFrame [frame $w.bot -relief raised -bd 1] - set maxWidth [::msgcat::mcmax OK Cancel] + set maxWidth [mcmax OK Cancel] set maxWidth [expr {$maxWidth<8?8:$maxWidth}] - button $botFrame.ok -text [::msgcat::mc "OK"] \ + button $botFrame.ok -text [mc "OK"] \ -width $maxWidth -under 0 \ -command [list tk::dialog::color::OkCmd $w] - button $botFrame.cancel -text [::msgcat::mc "Cancel"] \ + button $botFrame.cancel -text [mc "Cancel"] \ -width $maxWidth -under 0 \ -command [list tk::dialog::color::CancelCmd $w] diff --git a/library/console.tcl b/library/console.tcl index feb75cc..07f7dbe 100644 --- a/library/console.tcl +++ b/library/console.tcl @@ -4,7 +4,7 @@ # can be used by non-unix systems that do not have built-in support # for shells. # -# RCS: @(#) $Id: console.tcl,v 1.13.2.2 2002/02/05 02:25:16 wolfsuit Exp $ +# RCS: @(#) $Id: console.tcl,v 1.13.2.3 2002/06/10 05:38:24 wolfsuit Exp $ # # Copyright (c) 1995-1997 Sun Microsystems, Inc. # Copyright (c) 1998-2000 Ajuba Solutions. @@ -42,8 +42,6 @@ interp alias {} EvalAttached {} consoleinterp eval # Arguments: # None. -package require msgcat - proc ::tk::ConsoleInit {} { global tcl_platform @@ -63,39 +61,39 @@ proc ::tk::ConsoleInit {} { .menubar add cascade -label Edit -menu .menubar.edit -underline 0 menu .menubar.file -tearoff 0 - .menubar.file add command -label [::msgcat::mc "Source..."] \ + .menubar.file add command -label [mc "Source..."] \ -underline 0 -command tk::ConsoleSource - .menubar.file add command -label [::msgcat::mc "Hide Console"] \ + .menubar.file add command -label [mc "Hide Console"] \ -underline 0 -command {wm withdraw .} - .menubar.file add command -label [::msgcat::mc "Clear Console"] \ + .menubar.file add command -label [mc "Clear Console"] \ -underline 0 -command {.console delete 1.0 "promptEnd linestart"} if {[string equal $tcl_platform(platform) "macintosh"] || [string equal $tcl_platform(windowingsystem) "aqua"]} { - .menubar.file add command -label [::msgcat::mc "Quit"] \ + .menubar.file add command -label [mc "Quit"] \ -command exit -accel Cmd-Q } else { - .menubar.file add command -label [::msgcat::mc "Exit"] \ + .menubar.file add command -label [mc "Exit"] \ -underline 1 -command exit } menu .menubar.edit -tearoff 0 - .menubar.edit add command -label [::msgcat::mc "Cut"] -underline 2 \ + .menubar.edit add command -label [mc "Cut"] -underline 2 \ -command { event generate .console <<Cut>> } -accel "$mod+X" - .menubar.edit add command -label [::msgcat::mc "Copy"] -underline 0 \ + .menubar.edit add command -label [mc "Copy"] -underline 0 \ -command { event generate .console <<Copy>> } -accel "$mod+C" - .menubar.edit add command -label [::msgcat::mc "Paste"] -underline 1 \ + .menubar.edit add command -label [mc "Paste"] -underline 1 \ -command { event generate .console <<Paste>> } -accel "$mod+V" if {[string compare $tcl_platform(platform) "windows"]} { - .menubar.edit add command -label [::msgcat::mc "Clear"] -underline 2 \ + .menubar.edit add command -label [mc "Clear"] -underline 2 \ -command { event generate .console <<Clear>> } } else { - .menubar.edit add command -label [::msgcat::mc "Delete"] -underline 0 \ + .menubar.edit add command -label [mc "Delete"] -underline 0 \ -command { event generate .console <<Clear>> } -accel "Del" .menubar add cascade -label Help -menu .menubar.help -underline 0 menu .menubar.help -tearoff 0 - .menubar.help add command -label [::msgcat::mc "About..."] \ + .menubar.help add command -label [mc "About..."] \ -underline 0 -command tk::ConsoleAbout } @@ -112,11 +110,11 @@ proc ::tk::ConsoleInit {} { "windows" { $con configure -font systemfixed } - "unix" { - if {[string equal $tcl_platform(windowingsystem) "aqua"]} { + "unix" { + if {[string equal $tcl_platform(windowingsystem) "aqua"]} { $con configure -font {Monaco 9 normal} -highlightthickness 0 - } - } + } + } } ConsoleBind $con @@ -133,7 +131,7 @@ proc ::tk::ConsoleInit {} { focus $con wm protocol . WM_DELETE_WINDOW { wm withdraw . } - wm title . [::msgcat::mc "Console"] + wm title . [mc "Console"] flush stdout $con mark set output [$con index "end - 1 char"] tk::TextSetCursor $con end @@ -150,10 +148,10 @@ proc ::tk::ConsoleInit {} { proc ::tk::ConsoleSource {} { set filename [tk_getOpenFile -defaultextension .tcl -parent . \ - -title [::msgcat::mc "Select a file to source"] \ + -title [mc "Select a file to source"] \ -filetypes [list \ - [list [::msgcat::mc "Tcl Scripts"] .tcl] \ - [list [::msgcat::mc "All Files"] *]]] + [list [mc "Tcl Scripts"] .tcl] \ + [list [mc "All Files"] *]]] if {[string compare $filename ""]} { set cmd [list source $filename] if {[catch {consoleinterp eval $cmd} result]} { @@ -298,8 +296,10 @@ proc ::tk::ConsoleBind {w} { ## Get all Text bindings into Console foreach ev [bind Text] { bind Console $ev [bind Text $ev] } - ## We really didn't want the newline insertion + ## We really didn't want the newline insertion... bind Console <Control-Key-o> {} + ## ...or any Control-v binding (would block <<Paste>>) + bind Console <Control-Key-v> {} # For the moment, transpose isn't enabled until the console # gets and overhaul of how it handles input -- hobbs @@ -455,7 +455,7 @@ proc ::tk::ConsoleBind {w} { bind Console <F9> { eval destroy [winfo child .] if {[string equal $tcl_platform(platform) "macintosh"]} { - if {[catch {source $tk_library:console.tcl}]} {source -rsrc console} + if {[catch {source [file join $tk_library console.tcl]}]} {source -rsrc console} } else { source [file join $tk_library console.tcl] } @@ -584,7 +584,7 @@ proc ::tk::ConsoleExit {} { # None. proc ::tk::ConsoleAbout {} { - tk_messageBox -type ok -message "[::msgcat::mc {Tcl for Windows}] + tk_messageBox -type ok -message "[mc {Tcl for Windows}] Tcl $::tcl_patchLevel Tk $::tk_patchLevel" diff --git a/library/demos/paned1.tcl b/library/demos/paned1.tcl index 1ea358c..b6a2a23 100644 --- a/library/demos/paned1.tcl +++ b/library/demos/paned1.tcl @@ -3,7 +3,7 @@ # This demonstration script creates a toplevel window containing # a paned window that separates two windows horizontally. # -# RCS: @(#) $Id: paned1.tcl,v 1.1.4.1 2002/06/10 05:07:59 wolfsuit Exp $ +# RCS: @(#) $Id: paned1.tcl,v 1.1.4.2 2002/06/10 05:38:24 wolfsuit Exp $ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." diff --git a/library/demos/paned2.tcl b/library/demos/paned2.tcl index d53742d..4b0ad77 100644 --- a/library/demos/paned2.tcl +++ b/library/demos/paned2.tcl @@ -3,7 +3,7 @@ # This demonstration script creates a toplevel window containing # a paned window that separates two windows vertically. # -# RCS: @(#) $Id: paned2.tcl,v 1.1.4.1 2002/06/10 05:07:59 wolfsuit Exp $ +# RCS: @(#) $Id: paned2.tcl,v 1.1.4.2 2002/06/10 05:38:24 wolfsuit Exp $ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." diff --git a/library/demos/widget b/library/demos/widget index 2787244..e09cebb 100644 --- a/library/demos/widget +++ b/library/demos/widget @@ -11,7 +11,7 @@ exec wish "$0" "$@" # ".tcl" files is this directory, which are sourced by this script # as needed. # -# RCS: @(#) $Id: widget,v 1.3.2.2 2002/02/05 02:25:16 wolfsuit Exp $ +# RCS: @(#) $Id: widget,v 1.3.2.3 2002/06/10 05:38:24 wolfsuit Exp $ eval destroy [winfo child .] wm title . "Widget Demonstration" @@ -199,8 +199,12 @@ addDemoSection "Canvases" { cscroll "A simple scrollable canvas" } addDemoSection "Scales" { - vscale "Vertical scale" hscale "Horizontal scale" + vscale "Vertical scale" +} +addDemoSection "Paned Windows" { + paned1 "Horizontal paned window" + paned2 "Vertical paned window" } addDemoSection "Menus" { menu "Menus and cascades (sub-menus)" @@ -381,7 +385,7 @@ Copyright (c) 1996-1997 Sun Microsystems, Inc. Copyright (c) 1997-2000 Ajuba Solutions, Inc. -Copyright (c) 2001 Donal K. Fellows" +Copyright (c) 2001-2002 Donal K. Fellows" } # Local Variables: diff --git a/library/entry.tcl b/library/entry.tcl index 96ab609..9ee31a7 100644 --- a/library/entry.tcl +++ b/library/entry.tcl @@ -3,7 +3,7 @@ # This file defines the default bindings for Tk entry widgets and provides # procedures that help in implementing those bindings. # -# RCS: @(#) $Id: entry.tcl,v 1.16.2.2 2002/02/05 02:25:16 wolfsuit Exp $ +# RCS: @(#) $Id: entry.tcl,v 1.16.2.3 2002/06/10 05:38:24 wolfsuit Exp $ # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1997 Sun Microsystems, Inc. @@ -82,12 +82,12 @@ bind Entry <B1-Motion> { bind Entry <Double-1> { set tk::Priv(selectMode) word tk::EntryMouseSelect %W %x - catch {%W icursor sel.first} + catch {%W icursor sel.last} } bind Entry <Triple-1> { set tk::Priv(selectMode) line tk::EntryMouseSelect %W %x - %W icursor 0 + catch {%W icursor sel.last} } bind Entry <Shift-1> { set tk::Priv(selectMode) char diff --git a/library/msgbox.tcl b/library/msgbox.tcl index 107ac6d..bc710c4 100644 --- a/library/msgbox.tcl +++ b/library/msgbox.tcl @@ -3,7 +3,7 @@ # Implements messageboxes for platforms that do not have native # messagebox support. # -# RCS: @(#) $Id: msgbox.tcl,v 1.15.2.1 2001/10/15 09:22:00 wolfsuit Exp $ +# RCS: @(#) $Id: msgbox.tcl,v 1.15.2.2 2002/06/10 05:38:24 wolfsuit Exp $ # # Copyright (c) 1994-1997 Sun Microsystems, Inc. # @@ -172,66 +172,66 @@ proc ::tk::MessageBox {args} { switch -- $data(-type) { abortretryignore { - set maxWidth [::msgcat::mcmax Abort Retry Ignore] + set maxWidth [mcmax Abort Retry Ignore] set maxWidth [expr {$maxWidth<6?6:$maxWidth}] set buttons [list \ - [list abort -width $maxWidth -text [::msgcat::mc "Abort"] \ + [list abort -width $maxWidth -text [mc "Abort"] \ -under 0]\ - [list retry -width $maxWidth -text [::msgcat::mc "Retry"] \ + [list retry -width $maxWidth -text [mc "Retry"] \ -under 0]\ - [list ignore -width $maxWidth -text [::msgcat::mc "Ignore"] \ + [list ignore -width $maxWidth -text [mc "Ignore"] \ -under 0]\ ] } ok { set buttons [list \ - [list ok -width [::msgcat::mcmax OK] \ - -text [::msgcat::mc {OK}] -under 0] \ + [list ok -width [mcmax OK] \ + -text [mc {OK}] -under 0] \ ] if {[string equal $data(-default) ""]} { set data(-default) "ok" } } okcancel { - set maxWidth [::msgcat::mcmax OK Cancel] + set maxWidth [mcmax OK Cancel] set maxWidth [expr {$maxWidth<6?6:$maxWidth}] set buttons [list \ [list ok -width $maxWidth \ - -text [::msgcat::mc "OK"] -under 0] \ + -text [mc "OK"] -under 0] \ [list cancel -width $maxWidth \ - -text [::msgcat::mc "Cancel"] -under 0] \ + -text [mc "Cancel"] -under 0] \ ] } retrycancel { - set maxWidth [::msgcat::mcmax Retry Cancel] + set maxWidth [mcmax Retry Cancel] set maxWidth [expr {$maxWidth<6?6:$maxWidth}] set buttons [list \ [list retry -width $maxWidth \ - -text [::msgcat::mc "Retry"] -under 0] \ + -text [mc "Retry"] -under 0] \ [list cancel -width $maxWidth \ - -text [::msgcat::mc "Cancel"] -under 0] \ + -text [mc "Cancel"] -under 0] \ ] } yesno { - set maxWidth [::msgcat::mcmax Yes No] + set maxWidth [mcmax Yes No] set maxWidth [expr {$maxWidth<6?6:$maxWidth}] set buttons [list \ [list yes -width $maxWidth \ - -text [::msgcat::mc "Yes"] -under 0]\ + -text [mc "Yes"] -under 0]\ [list no -width $maxWidth \ - -text [::msgcat::mc "No"] -under 0]\ + -text [mc "No"] -under 0]\ ] } yesnocancel { - set maxWidth [::msgcat::mcmax Yes No Cancel] + set maxWidth [mcmax Yes No Cancel] set maxWidth [expr {$maxWidth<6?6:$maxWidth}] set buttons [list \ [list yes -width $maxWidth \ - -text [::msgcat::mc "Yes"] -under 0]\ + -text [mc "Yes"] -under 0]\ [list no -width $maxWidth \ - -text [::msgcat::mc "No"] -under 0]\ + -text [mc "No"] -under 0]\ [list cancel -width $maxWidth \ - -text [::msgcat::mc "Cancel"] -under 0]\ + -text [mc "Cancel"] -under 0]\ ] } default { @@ -374,6 +374,8 @@ proc ::tk::MessageBox {args} { if {[string equal $name $data(-default)]} { $w.$name configure -default active + } else { + $w.$name configure -default normal } pack $w.$name -in $w.bot -side left -expand 1 -padx 3m -pady 2m diff --git a/library/msgs/cs.msg b/library/msgs/cs.msg index 37a21a1..23d8e0a 100644 --- a/library/msgs/cs.msg +++ b/library/msgs/cs.msg @@ -1,67 +1,69 @@ -::msgcat::mcset cs "Abort" "P\u0159eru\u0161it" -::msgcat::mcset cs "About..." "O programu..." -::msgcat::mcset cs "All Files" "V\u0161echny soubory" -::msgcat::mcset cs "Application Error" "Chyba programu" -::msgcat::mcset cs "Blue" "Modr\341" -::msgcat::mcset cs "Cancel" "Zru\u0161it" -::msgcat::mcset cs "Cannot change to the directory \"%1\$s\".\nPermission denied." "Nemohu zm\u011bnit atku\341ln\355 adres\341\u0159 na \"%1\$s\".\nP\u0159\355stup odm\355tnut." -::msgcat::mcset cs "Choose Directory" "V\375b\u011br adres\341\u0159e" -::msgcat::mcset cs "Clear" "Smazat" -::msgcat::mcset cs "Color" "Barva" -::msgcat::mcset cs "Console" "Konzole" -::msgcat::mcset cs "Copy" "Kop\355rovat" -::msgcat::mcset cs "Cut" "Vy\u0159\355znout" -::msgcat::mcset cs "Delete" "Smazat" -::msgcat::mcset cs "Details >>" "Detaily >>" -::msgcat::mcset cs "Directory \"%1\$s\" does not exist." "Adres\341\u0159 \"%1\$s\" neexistuje." -::msgcat::mcset cs "Directory:" "Adres\341\u0159:" -::msgcat::mcset cs "Error: %1\$s" "Chyba: %1\$s" -::msgcat::mcset cs "Exit" "Konec" -::msgcat::mcset cs "File \"%1\$s\" already exists.\n\n" "Soubor \"%1\$s\" ji\u017e existuje.\n\n" -::msgcat::mcset cs "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Soubor \"%1\$s\" ji\u017e existuje.\nChcete jej p\u0159epsat?" -::msgcat::mcset cs "File \"%1\$s\" does not exist." "Soubor \"%1\$s\" neexistuje." -::msgcat::mcset cs "File name:" "Jm\351no souboru:" -::msgcat::mcset cs "File names:" "Jm\351na soubor\u016f:" -::msgcat::mcset cs "Files of type:" "Typy soubor\u016f:" -::msgcat::mcset cs "Files:" "Soubory:" -::msgcat::mcset cs "Filter" "Filtr" -::msgcat::mcset cs "Filter:" "Filtr:" -::msgcat::mcset cs "Green" "Zelen\341" -::msgcat::mcset cs "Hi" -::msgcat::mcset cs "Hide Console" "Skr\375t konsolu" -::msgcat::mcset cs "Ignore" "Ignorovat" -::msgcat::mcset cs "Invalid file name \"%1\$s\"." "\u0160patn\351 jm\351no souboru \"%1\$s\"." -::msgcat::mcset cs "Log Files" "Log soubory" -::msgcat::mcset cs "No" "Ne" -::msgcat::mcset cs "OK" -::msgcat::mcset cs "Ok" -::msgcat::mcset cs "Open" "Otev\u0159\355t" -::msgcat::mcset cs "Open Multiple Files" "Otev\u0159\355t v\355ce soubor\u016f" -::msgcat::mcset cs "Paste" "Vlo\u017eit" -::msgcat::mcset cs "Quit" "Skon\u010dit" -::msgcat::mcset cs "Red" "\u010cerven\341" -::msgcat::mcset cs "Replace existing file?" "Nahradit st\341vaj\355c\355 soubor?" -::msgcat::mcset cs "Retry" "Znovu" -::msgcat::mcset cs "Save" "Ulo\u017eit" -::msgcat::mcset cs "Save As" "Ulo\u017eit jako" -::msgcat::mcset cs "Save To Log" "Ulo\u017eit do logu" -::msgcat::mcset cs "Select Log File" "Vybrat log soubor" -::msgcat::mcset cs "Select a file to source" "Vybrat soubor k nahr\341n\355" -::msgcat::mcset cs "Selection:" "V\375b\u011br:" -::msgcat::mcset cs "Skip Messages" "P\u0159esko\u010dit zpr\341vy" -::msgcat::mcset cs "Source..." "Nahr\341t..." -::msgcat::mcset cs "Tcl Scripts" "Tcl skripty" -::msgcat::mcset cs "Tcl for Windows" "Tcl pro Windows" -::msgcat::mcset cs "Text Files" "Textov\351 soubory" -::msgcat::mcset cs "Yes" "Ano" -::msgcat::mcset cs "abort" "p\u0159eru\u0161it" -::msgcat::mcset cs "blue" "modr\341" -::msgcat::mcset cs "cancel" "zru\u0161it" -::msgcat::mcset cs "extension" "p\u0159\355pona" -::msgcat::mcset cs "extensions" "p\u0159\355pony" -::msgcat::mcset cs "green" "zelen\341" -::msgcat::mcset cs "ignore" "ignorovat" -::msgcat::mcset cs "ok" -::msgcat::mcset cs "red" "\u010derven\341" -::msgcat::mcset cs "retry" "znovu" -::msgcat::mcset cs "yes" "ano" +namespace eval ::tk { + ::msgcat::mcset cs "Abort" "P\u0159eru\u0161it" + ::msgcat::mcset cs "About..." "O programu..." + ::msgcat::mcset cs "All Files" "V\u0161echny soubory" + ::msgcat::mcset cs "Application Error" "Chyba programu" + ::msgcat::mcset cs "Blue" "Modr\341" + ::msgcat::mcset cs "Cancel" "Zru\u0161it" + ::msgcat::mcset cs "Cannot change to the directory \"%1\$s\".\nPermission denied." "Nemohu zm\u011bnit atku\341ln\355 adres\341\u0159 na \"%1\$s\".\nP\u0159\355stup odm\355tnut." + ::msgcat::mcset cs "Choose Directory" "V\375b\u011br adres\341\u0159e" + ::msgcat::mcset cs "Clear" "Smazat" + ::msgcat::mcset cs "Color" "Barva" + ::msgcat::mcset cs "Console" "Konzole" + ::msgcat::mcset cs "Copy" "Kop\355rovat" + ::msgcat::mcset cs "Cut" "Vy\u0159\355znout" + ::msgcat::mcset cs "Delete" "Smazat" + ::msgcat::mcset cs "Details >>" "Detaily >>" + ::msgcat::mcset cs "Directory \"%1\$s\" does not exist." "Adres\341\u0159 \"%1\$s\" neexistuje." + ::msgcat::mcset cs "Directory:" "Adres\341\u0159:" + ::msgcat::mcset cs "Error: %1\$s" "Chyba: %1\$s" + ::msgcat::mcset cs "Exit" "Konec" + ::msgcat::mcset cs "File \"%1\$s\" already exists.\n\n" "Soubor \"%1\$s\" ji\u017e existuje.\n\n" + ::msgcat::mcset cs "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Soubor \"%1\$s\" ji\u017e existuje.\nChcete jej p\u0159epsat?" + ::msgcat::mcset cs "File \"%1\$s\" does not exist." "Soubor \"%1\$s\" neexistuje." + ::msgcat::mcset cs "File name:" "Jm\351no souboru:" + ::msgcat::mcset cs "File names:" "Jm\351na soubor\u016f:" + ::msgcat::mcset cs "Files of type:" "Typy soubor\u016f:" + ::msgcat::mcset cs "Files:" "Soubory:" + ::msgcat::mcset cs "Filter" "Filtr" + ::msgcat::mcset cs "Filter:" "Filtr:" + ::msgcat::mcset cs "Green" "Zelen\341" + ::msgcat::mcset cs "Hi" + ::msgcat::mcset cs "Hide Console" "Skr\375t konsolu" + ::msgcat::mcset cs "Ignore" "Ignorovat" + ::msgcat::mcset cs "Invalid file name \"%1\$s\"." "\u0160patn\351 jm\351no souboru \"%1\$s\"." + ::msgcat::mcset cs "Log Files" "Log soubory" + ::msgcat::mcset cs "No" "Ne" + ::msgcat::mcset cs "OK" + ::msgcat::mcset cs "Ok" + ::msgcat::mcset cs "Open" "Otev\u0159\355t" + ::msgcat::mcset cs "Open Multiple Files" "Otev\u0159\355t v\355ce soubor\u016f" + ::msgcat::mcset cs "Paste" "Vlo\u017eit" + ::msgcat::mcset cs "Quit" "Skon\u010dit" + ::msgcat::mcset cs "Red" "\u010cerven\341" + ::msgcat::mcset cs "Replace existing file?" "Nahradit st\341vaj\355c\355 soubor?" + ::msgcat::mcset cs "Retry" "Znovu" + ::msgcat::mcset cs "Save" "Ulo\u017eit" + ::msgcat::mcset cs "Save As" "Ulo\u017eit jako" + ::msgcat::mcset cs "Save To Log" "Ulo\u017eit do logu" + ::msgcat::mcset cs "Select Log File" "Vybrat log soubor" + ::msgcat::mcset cs "Select a file to source" "Vybrat soubor k nahr\341n\355" + ::msgcat::mcset cs "Selection:" "V\375b\u011br:" + ::msgcat::mcset cs "Skip Messages" "P\u0159esko\u010dit zpr\341vy" + ::msgcat::mcset cs "Source..." "Nahr\341t..." + ::msgcat::mcset cs "Tcl Scripts" "Tcl skripty" + ::msgcat::mcset cs "Tcl for Windows" "Tcl pro Windows" + ::msgcat::mcset cs "Text Files" "Textov\351 soubory" + ::msgcat::mcset cs "Yes" "Ano" + ::msgcat::mcset cs "abort" "p\u0159eru\u0161it" + ::msgcat::mcset cs "blue" "modr\341" + ::msgcat::mcset cs "cancel" "zru\u0161it" + ::msgcat::mcset cs "extension" "p\u0159\355pona" + ::msgcat::mcset cs "extensions" "p\u0159\355pony" + ::msgcat::mcset cs "green" "zelen\341" + ::msgcat::mcset cs "ignore" "ignorovat" + ::msgcat::mcset cs "ok" + ::msgcat::mcset cs "red" "\u010derven\341" + ::msgcat::mcset cs "retry" "znovu" + ::msgcat::mcset cs "yes" "ano" +}
\ No newline at end of file diff --git a/library/msgs/de.msg b/library/msgs/de.msg index 60e2ce7..5e10810 100644 --- a/library/msgs/de.msg +++ b/library/msgs/de.msg @@ -1,67 +1,69 @@ -::msgcat::mcset de "Abort" "Abbruch" -::msgcat::mcset de "About..." "\u00dcber..." -::msgcat::mcset de "All Files" "Alle Dateien" -::msgcat::mcset de "Application Error" "Applikationsfehler" -::msgcat::mcset de "Blue" "Blau" -::msgcat::mcset de "Cancel" "Abbruch" -::msgcat::mcset de "Cannot change to the directory \"%1\$s\".\nPermission denied." "Kann nicht in das Verzeichnis \"%1\$s\" wechseln.\nKeine Rechte vorhanden." -::msgcat::mcset de "Choose Directory" "W\u00e4hle Verzeichnis" -::msgcat::mcset de "Clear" "R\u00fccksetzen" -::msgcat::mcset de "Color" "Farbe" -::msgcat::mcset de "Console" "Konsole" -::msgcat::mcset de "Copy" "Kopieren" -::msgcat::mcset de "Cut" "Ausschneiden" -::msgcat::mcset de "Delete" "L\u00f6schen" -::msgcat::mcset de "Details >>" -::msgcat::mcset de "Directory \"%1\$s\" does not exist." "Das Verzeichnis \"%1\$s\" existiert nicht." -::msgcat::mcset de "Directory:" "Verzeichnis:" -::msgcat::mcset de "Error: %1\$s" "Fehler: %1\$s" -::msgcat::mcset de "Exit" "Ende" -::msgcat::mcset de "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Die Datei \"%1\$s\" ist bereits vorhanden.\nWollen sie diese Datei \u00fcberschreiben ?" -::msgcat::mcset de "File \"%1\$s\" already exists.\n\n" "Die Datei \"%1\$s\" ist bereits vorhanden.\n\n" -::msgcat::mcset de "File \"%1\$s\" does not exist." "Die Datei \"%1\$s\" existiert nicht." -::msgcat::mcset de "File name:" "Dateiname:" -::msgcat::mcset de "File names:" "Dateinamen:" -::msgcat::mcset de "Files of type:" "Dateien des Typs:" -::msgcat::mcset de "Files:" "Dateien:" -::msgcat::mcset de "Filter" -::msgcat::mcset de "Filter:" -::msgcat::mcset de "Green" "Gr\u00fcn" -::msgcat::mcset de "Hi" "Hallo" -::msgcat::mcset de "Hide Console" "Konsole unsichtbar machen" -::msgcat::mcset de "Ignore" "Ignorieren" -::msgcat::mcset de "Invalid file name \"%1\$s\"." "Ung\u00fcltiger Dateiname \"%1\$s\"." -::msgcat::mcset de "Log Files" "Protokolldatei" -::msgcat::mcset de "No" "Nein" -::msgcat::mcset de "OK" -::msgcat::mcset de "Ok" -::msgcat::mcset de "Open" "\u00d6ffnen" -::msgcat::mcset de "Open Multiple Files" -::msgcat::mcset de "Paste" "Einf\u00fcgen" -::msgcat::mcset de "Quit" "Beenden" -::msgcat::mcset de "Red" "Rot" -::msgcat::mcset de "Replace existing file?" "Existierende Datei ersetzen?" -::msgcat::mcset de "Retry" "Wiederholen" -::msgcat::mcset de "Save" "Speichern" -::msgcat::mcset de "Save As" "Speichern unter" -::msgcat::mcset de "Save To Log" "In Protokoll speichern" -::msgcat::mcset de "Select Log File" "Protokolldatei ausw\u00e4hlen" -::msgcat::mcset de "Select a file to source" "Auszuf\u00fchrende Datei ausw\u00e4hlen" -::msgcat::mcset de "Selection:" "Auswahl:" -::msgcat::mcset de "Skip Messages" "Weitere Nachrichten \u00fcberspringen" -::msgcat::mcset de "Source..." "Ausf\u00fchren..." -::msgcat::mcset de "Tcl Scripts" "Tcl-Skripte" -::msgcat::mcset de "Tcl for Windows" "Tcl f\u00fcr Windows" -::msgcat::mcset de "Text Files" "Textdateien" -::msgcat::mcset de "Yes" "Ja" -::msgcat::mcset de "abort" "abbrechen" -::msgcat::mcset de "blue" "blau" -::msgcat::mcset de "cancel" "abbrechen" -::msgcat::mcset de "extension" "Erweiterung" -::msgcat::mcset de "extensions" "Erweiterungen" -::msgcat::mcset de "green" "gr\u00fcn" -::msgcat::mcset de "ignore" "ignorieren" -::msgcat::mcset de "ok" -::msgcat::mcset de "red" "rot" -::msgcat::mcset de "retry" "wiederholen" -::msgcat::mcset de "yes" "ja" +namespace eval ::tk { + ::msgcat::mcset de "Abort" "Abbruch" + ::msgcat::mcset de "About..." "\u00dcber..." + ::msgcat::mcset de "All Files" "Alle Dateien" + ::msgcat::mcset de "Application Error" "Applikationsfehler" + ::msgcat::mcset de "Blue" "Blau" + ::msgcat::mcset de "Cancel" "Abbruch" + ::msgcat::mcset de "Cannot change to the directory \"%1\$s\".\nPermission denied." "Kann nicht in das Verzeichnis \"%1\$s\" wechseln.\nKeine Rechte vorhanden." + ::msgcat::mcset de "Choose Directory" "W\u00e4hle Verzeichnis" + ::msgcat::mcset de "Clear" "R\u00fccksetzen" + ::msgcat::mcset de "Color" "Farbe" + ::msgcat::mcset de "Console" "Konsole" + ::msgcat::mcset de "Copy" "Kopieren" + ::msgcat::mcset de "Cut" "Ausschneiden" + ::msgcat::mcset de "Delete" "L\u00f6schen" + ::msgcat::mcset de "Details >>" + ::msgcat::mcset de "Directory \"%1\$s\" does not exist." "Das Verzeichnis \"%1\$s\" existiert nicht." + ::msgcat::mcset de "Directory:" "Verzeichnis:" + ::msgcat::mcset de "Error: %1\$s" "Fehler: %1\$s" + ::msgcat::mcset de "Exit" "Ende" + ::msgcat::mcset de "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Die Datei \"%1\$s\" ist bereits vorhanden.\nWollen sie diese Datei \u00fcberschreiben ?" + ::msgcat::mcset de "File \"%1\$s\" already exists.\n\n" "Die Datei \"%1\$s\" ist bereits vorhanden.\n\n" + ::msgcat::mcset de "File \"%1\$s\" does not exist." "Die Datei \"%1\$s\" existiert nicht." + ::msgcat::mcset de "File name:" "Dateiname:" + ::msgcat::mcset de "File names:" "Dateinamen:" + ::msgcat::mcset de "Files of type:" "Dateien des Typs:" + ::msgcat::mcset de "Files:" "Dateien:" + ::msgcat::mcset de "Filter" + ::msgcat::mcset de "Filter:" + ::msgcat::mcset de "Green" "Gr\u00fcn" + ::msgcat::mcset de "Hi" "Hallo" + ::msgcat::mcset de "Hide Console" "Konsole unsichtbar machen" + ::msgcat::mcset de "Ignore" "Ignorieren" + ::msgcat::mcset de "Invalid file name \"%1\$s\"." "Ung\u00fcltiger Dateiname \"%1\$s\"." + ::msgcat::mcset de "Log Files" "Protokolldatei" + ::msgcat::mcset de "No" "Nein" + ::msgcat::mcset de "OK" + ::msgcat::mcset de "Ok" + ::msgcat::mcset de "Open" "\u00d6ffnen" + ::msgcat::mcset de "Open Multiple Files" + ::msgcat::mcset de "Paste" "Einf\u00fcgen" + ::msgcat::mcset de "Quit" "Beenden" + ::msgcat::mcset de "Red" "Rot" + ::msgcat::mcset de "Replace existing file?" "Existierende Datei ersetzen?" + ::msgcat::mcset de "Retry" "Wiederholen" + ::msgcat::mcset de "Save" "Speichern" + ::msgcat::mcset de "Save As" "Speichern unter" + ::msgcat::mcset de "Save To Log" "In Protokoll speichern" + ::msgcat::mcset de "Select Log File" "Protokolldatei ausw\u00e4hlen" + ::msgcat::mcset de "Select a file to source" "Auszuf\u00fchrende Datei ausw\u00e4hlen" + ::msgcat::mcset de "Selection:" "Auswahl:" + ::msgcat::mcset de "Skip Messages" "Weitere Nachrichten \u00fcberspringen" + ::msgcat::mcset de "Source..." "Ausf\u00fchren..." + ::msgcat::mcset de "Tcl Scripts" "Tcl-Skripte" + ::msgcat::mcset de "Tcl for Windows" "Tcl f\u00fcr Windows" + ::msgcat::mcset de "Text Files" "Textdateien" + ::msgcat::mcset de "Yes" "Ja" + ::msgcat::mcset de "abort" "abbrechen" + ::msgcat::mcset de "blue" "blau" + ::msgcat::mcset de "cancel" "abbrechen" + ::msgcat::mcset de "extension" "Erweiterung" + ::msgcat::mcset de "extensions" "Erweiterungen" + ::msgcat::mcset de "green" "gr\u00fcn" + ::msgcat::mcset de "ignore" "ignorieren" + ::msgcat::mcset de "ok" + ::msgcat::mcset de "red" "rot" + ::msgcat::mcset de "retry" "wiederholen" + ::msgcat::mcset de "yes" "ja" +}
\ No newline at end of file diff --git a/library/msgs/el.msg b/library/msgs/el.msg index f66a0ab..ad2fff7 100644 --- a/library/msgs/el.msg +++ b/library/msgs/el.msg @@ -2,82 +2,84 @@ ## Please report any changes/suggestions to: ## petasis@iit.demokritos.gr -::msgcat::mcset el "Abort" "\u03a4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2" -::msgcat::mcset el "About..." "\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac..." -::msgcat::mcset el "All Files" "\u038c\u03bb\u03b1 \u03c4\u03b1 \u0391\u03c1\u03c7\u03b5\u03af\u03b1" -::msgcat::mcset el "Application Error" "\u039b\u03ac\u03b8\u03bf\u03c2 \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2" -::msgcat::mcset el "Blue" "\u039c\u03c0\u03bb\u03b5" -::msgcat::mcset el "Cancel" "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7" -::msgcat::mcset el \ +namespace eval ::tk { + ::msgcat::mcset el "Abort" "\u03a4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2" + ::msgcat::mcset el "About..." "\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac..." + ::msgcat::mcset el "All Files" "\u038c\u03bb\u03b1 \u03c4\u03b1 \u0391\u03c1\u03c7\u03b5\u03af\u03b1" + ::msgcat::mcset el "Application Error" "\u039b\u03ac\u03b8\u03bf\u03c2 \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2" + ::msgcat::mcset el "Blue" "\u039c\u03c0\u03bb\u03b5" + ::msgcat::mcset el "Cancel" "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7" + ::msgcat::mcset el \ "Cannot change to the directory \"%1\$s\".\nPermission denied." \ "\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03ba\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5 \u03c3\u03b5 \"%1\$s\".\n\u0397 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9." -::msgcat::mcset el "Choose Directory" "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u039a\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5" -::msgcat::mcset el "Clear" "\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2" -::msgcat::mcset el "Color" "\u03a7\u03c1\u03ce\u03bc\u03b1" -::msgcat::mcset el "Console" "\u039a\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1" -::msgcat::mcset el "Copy" "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae" -::msgcat::mcset el "Cut" "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae" -::msgcat::mcset el "Delete" "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae" -::msgcat::mcset el "Details >>" "\u039b\u03b5\u03c0\u03c4\u03bf\u03bc\u03ad\u03c1\u03b5\u03b9\u03b5\u03c2 >>" -::msgcat::mcset el "Directory \"%1\$s\" does not exist." \ + ::msgcat::mcset el "Choose Directory" "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u039a\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5" + ::msgcat::mcset el "Clear" "\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2" + ::msgcat::mcset el "Color" "\u03a7\u03c1\u03ce\u03bc\u03b1" + ::msgcat::mcset el "Console" "\u039a\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1" + ::msgcat::mcset el "Copy" "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae" + ::msgcat::mcset el "Cut" "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae" + ::msgcat::mcset el "Delete" "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae" + ::msgcat::mcset el "Details >>" "\u039b\u03b5\u03c0\u03c4\u03bf\u03bc\u03ad\u03c1\u03b5\u03b9\u03b5\u03c2 >>" + ::msgcat::mcset el "Directory \"%1\$s\" does not exist." \ "\u039f \u03ba\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2 \"%1\$s\" \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9." -::msgcat::mcset el "Directory:" "\u039a\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2:" -::msgcat::mcset el "Error: %1\$s" "\u039b\u03ac\u03b8\u03bf\u03c2: %1\$s" -::msgcat::mcset el "Exit" "\u0388\u03be\u03bf\u03b4\u03bf\u03c2" -::msgcat::mcset el \ + ::msgcat::mcset el "Directory:" "\u039a\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2:" + ::msgcat::mcset el "Error: %1\$s" "\u039b\u03ac\u03b8\u03bf\u03c2: %1\$s" + ::msgcat::mcset el "Exit" "\u0388\u03be\u03bf\u03b4\u03bf\u03c2" + ::msgcat::mcset el \ "File \"%1\$s\" already exists.\nDo you want to overwrite it?" \ "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03ae\u03b4\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.\n\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03ba\u03b1\u03bb\u03c5\u03c6\u03b8\u03b5\u03af;" -::msgcat::mcset el "File \"%1\$s\" already exists.\n\n" \ + ::msgcat::mcset el "File \"%1\$s\" already exists.\n\n" \ "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03ae\u03b4\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.\n\n" -::msgcat::mcset el "File \"%1\$s\" does not exist." \ + ::msgcat::mcset el "File \"%1\$s\" does not exist." \ "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9." -::msgcat::mcset el "File name:" "\u038c\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5:" -::msgcat::mcset el "File names:" "\u038c\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd:" -::msgcat::mcset el "Files of type:" "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u03c4\u03bf\u03c5 \u03c4\u03cd\u03c0\u03bf\u03c5:" -::msgcat::mcset el "Files:" "\u0391\u03c1\u03c7\u03b5\u03af\u03b1:" -::msgcat::mcset el "Filter" "\u03a6\u03af\u03bb\u03c4\u03c1\u03bf" -::msgcat::mcset el "Filter:" "\u03a6\u03af\u03bb\u03c4\u03c1\u03bf:" -::msgcat::mcset el "Green" "\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf" -::msgcat::mcset el "Hi" "\u0393\u03b5\u03b9\u03b1" -::msgcat::mcset el "Hide Console" "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03ba\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1\u03c2" -::msgcat::mcset el "Ignore" "\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7" -::msgcat::mcset el "Invalid file name \"%1\$s\"." \ + ::msgcat::mcset el "File name:" "\u038c\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5:" + ::msgcat::mcset el "File names:" "\u038c\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd:" + ::msgcat::mcset el "Files of type:" "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u03c4\u03bf\u03c5 \u03c4\u03cd\u03c0\u03bf\u03c5:" + ::msgcat::mcset el "Files:" "\u0391\u03c1\u03c7\u03b5\u03af\u03b1:" + ::msgcat::mcset el "Filter" "\u03a6\u03af\u03bb\u03c4\u03c1\u03bf" + ::msgcat::mcset el "Filter:" "\u03a6\u03af\u03bb\u03c4\u03c1\u03bf:" + ::msgcat::mcset el "Green" "\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf" + ::msgcat::mcset el "Hi" "\u0393\u03b5\u03b9\u03b1" + ::msgcat::mcset el "Hide Console" "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03ba\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1\u03c2" + ::msgcat::mcset el "Ignore" "\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7" + ::msgcat::mcset el "Invalid file name \"%1\$s\"." \ "\u0386\u03ba\u03c5\u03c1\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \"%1\$s\"." -::msgcat::mcset el "Log Files" "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2" -::msgcat::mcset el "No" "\u038c\u03c7\u03b9" -::msgcat::mcset el "OK" "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9" -::msgcat::mcset el "Ok" "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9" -::msgcat::mcset el "Open" "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1" -::msgcat::mcset el "Open Multiple Files" \ + ::msgcat::mcset el "Log Files" "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2" + ::msgcat::mcset el "No" "\u038c\u03c7\u03b9" + ::msgcat::mcset el "OK" "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9" + ::msgcat::mcset el "Ok" "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9" + ::msgcat::mcset el "Open" "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1" + ::msgcat::mcset el "Open Multiple Files" \ "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03ce\u03bd \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd" -::msgcat::mcset el "Paste" "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7" -::msgcat::mcset el "Quit" "\u0388\u03be\u03bf\u03b4\u03bf\u03c2" -::msgcat::mcset el "Red" "\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf" -::msgcat::mcset el "Replace existing file?" \ + ::msgcat::mcset el "Paste" "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7" + ::msgcat::mcset el "Quit" "\u0388\u03be\u03bf\u03b4\u03bf\u03c2" + ::msgcat::mcset el "Red" "\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf" + ::msgcat::mcset el "Replace existing file?" \ "\u0395\u03c0\u03b9\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03bd\u03c4\u03bf\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5;" -::msgcat::mcset el "Retry" "\u03a0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac" -::msgcat::mcset el "Save" "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7" -::msgcat::mcset el "Save As" "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03b1\u03bd" -::msgcat::mcset el "Save To Log" "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2" -::msgcat::mcset el "Select Log File" "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2" -::msgcat::mcset el "Select a file to source" \ + ::msgcat::mcset el "Retry" "\u03a0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac" + ::msgcat::mcset el "Save" "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7" + ::msgcat::mcset el "Save As" "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03b1\u03bd" + ::msgcat::mcset el "Save To Log" "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2" + ::msgcat::mcset el "Select Log File" "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2" + ::msgcat::mcset el "Select a file to source" \ "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03b5\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7" -::msgcat::mcset el "Selection:" "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae:" -::msgcat::mcset el "Skip Messages" "\u0391\u03c0\u03bf\u03c6\u03c5\u03b3\u03ae \u03bc\u03c5\u03bd\u03b7\u03bc\u03ac\u03c4\u03c9\u03bd" -::msgcat::mcset el "Source..." "\u0395\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7..." -::msgcat::mcset el "Tcl Scripts" "Tcl Scripts" -::msgcat::mcset el "Tcl for Windows" "Tcl \u03b3\u03b9\u03b1 Windows" -::msgcat::mcset el "Text Files" "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5" -::msgcat::mcset el "Yes" "\u039d\u03b1\u03b9" -::msgcat::mcset el "abort" "\u03c4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2" -::msgcat::mcset el "blue" "\u03bc\u03c0\u03bb\u03b5" -::msgcat::mcset el "cancel" "\u03b1\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7" -::msgcat::mcset el "extension" "\u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7" -::msgcat::mcset el "extensions" "\u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2" -::msgcat::mcset el "green" "\u03c0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf" -::msgcat::mcset el "ignore" "\u03b1\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7" -::msgcat::mcset el "ok" "\u03b5\u03bd\u03c4\u03ac\u03be\u03b5\u03b9" -::msgcat::mcset el "red" "\u03ba\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf" -::msgcat::mcset el "retry" "\u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac" -::msgcat::mcset el "yes" "\u03bd\u03b1\u03b9" + ::msgcat::mcset el "Selection:" "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae:" + ::msgcat::mcset el "Skip Messages" "\u0391\u03c0\u03bf\u03c6\u03c5\u03b3\u03ae \u03bc\u03c5\u03bd\u03b7\u03bc\u03ac\u03c4\u03c9\u03bd" + ::msgcat::mcset el "Source..." "\u0395\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7..." + ::msgcat::mcset el "Tcl Scripts" "Tcl Scripts" + ::msgcat::mcset el "Tcl for Windows" "Tcl \u03b3\u03b9\u03b1 Windows" + ::msgcat::mcset el "Text Files" "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5" + ::msgcat::mcset el "Yes" "\u039d\u03b1\u03b9" + ::msgcat::mcset el "abort" "\u03c4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2" + ::msgcat::mcset el "blue" "\u03bc\u03c0\u03bb\u03b5" + ::msgcat::mcset el "cancel" "\u03b1\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7" + ::msgcat::mcset el "extension" "\u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7" + ::msgcat::mcset el "extensions" "\u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2" + ::msgcat::mcset el "green" "\u03c0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf" + ::msgcat::mcset el "ignore" "\u03b1\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7" + ::msgcat::mcset el "ok" "\u03b5\u03bd\u03c4\u03ac\u03be\u03b5\u03b9" + ::msgcat::mcset el "red" "\u03ba\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf" + ::msgcat::mcset el "retry" "\u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac" + ::msgcat::mcset el "yes" "\u03bd\u03b1\u03b9" +} diff --git a/library/msgs/en.msg b/library/msgs/en.msg index d49d543..3a64932 100644 --- a/library/msgs/en.msg +++ b/library/msgs/en.msg @@ -1,67 +1,69 @@ -::msgcat::mcset en "Abort" -::msgcat::mcset en "About..." -::msgcat::mcset en "All Files" -::msgcat::mcset en "Application Error" -::msgcat::mcset en "Blue" -::msgcat::mcset en "Cancel" -::msgcat::mcset en "Cannot change to the directory \"%1\$s\".\nPermission denied." -::msgcat::mcset en "Choose Directory" -::msgcat::mcset en "Clear" -::msgcat::mcset en "Color" -::msgcat::mcset en "Console" -::msgcat::mcset en "Copy" -::msgcat::mcset en "Cut" -::msgcat::mcset en "Delete" -::msgcat::mcset en "Details >>" -::msgcat::mcset en "Directory \"%1\$s\" does not exist." -::msgcat::mcset en "Directory:" -::msgcat::mcset en "Error: %1\$s" -::msgcat::mcset en "Exit" -::msgcat::mcset en "File \"%1\$s\" already exists.\nDo you want to overwrite it?" -::msgcat::mcset en "File \"%1\$s\" already exists.\n\n" -::msgcat::mcset en "File \"%1\$s\" does not exist." -::msgcat::mcset en "File name:" -::msgcat::mcset en "File names:" -::msgcat::mcset en "Files of type:" -::msgcat::mcset en "Files:" -::msgcat::mcset en "Filter" -::msgcat::mcset en "Filter:" -::msgcat::mcset en "Green" -::msgcat::mcset en "Hi" -::msgcat::mcset en "Hide Console" -::msgcat::mcset en "Ignore" -::msgcat::mcset en "Invalid file name \"%1\$s\"." -::msgcat::mcset en "Log Files" -::msgcat::mcset en "No" -::msgcat::mcset en "OK" -::msgcat::mcset en "Ok" -::msgcat::mcset en "Open" -::msgcat::mcset en "Open Multiple Files" -::msgcat::mcset en "Paste" -::msgcat::mcset en "Quit" -::msgcat::mcset en "Red" -::msgcat::mcset en "Replace existing file?" -::msgcat::mcset en "Retry" -::msgcat::mcset en "Save" -::msgcat::mcset en "Save As" -::msgcat::mcset en "Save To Log" -::msgcat::mcset en "Select Log File" -::msgcat::mcset en "Select a file to source" -::msgcat::mcset en "Selection:" -::msgcat::mcset en "Skip Messages" -::msgcat::mcset en "Source..." -::msgcat::mcset en "Tcl Scripts" -::msgcat::mcset en "Tcl for Windows" -::msgcat::mcset en "Text Files" -::msgcat::mcset en "Yes" -::msgcat::mcset en "abort" -::msgcat::mcset en "blue" -::msgcat::mcset en "cancel" -::msgcat::mcset en "extension" -::msgcat::mcset en "extensions" -::msgcat::mcset en "green" -::msgcat::mcset en "ignore" -::msgcat::mcset en "ok" -::msgcat::mcset en "red" -::msgcat::mcset en "retry" -::msgcat::mcset en "yes" +namespace eval ::tk { + ::msgcat::mcset en "Abort" + ::msgcat::mcset en "About..." + ::msgcat::mcset en "All Files" + ::msgcat::mcset en "Application Error" + ::msgcat::mcset en "Blue" + ::msgcat::mcset en "Cancel" + ::msgcat::mcset en "Cannot change to the directory \"%1\$s\".\nPermission denied." + ::msgcat::mcset en "Choose Directory" + ::msgcat::mcset en "Clear" + ::msgcat::mcset en "Color" + ::msgcat::mcset en "Console" + ::msgcat::mcset en "Copy" + ::msgcat::mcset en "Cut" + ::msgcat::mcset en "Delete" + ::msgcat::mcset en "Details >>" + ::msgcat::mcset en "Directory \"%1\$s\" does not exist." + ::msgcat::mcset en "Directory:" + ::msgcat::mcset en "Error: %1\$s" + ::msgcat::mcset en "Exit" + ::msgcat::mcset en "File \"%1\$s\" already exists.\nDo you want to overwrite it?" + ::msgcat::mcset en "File \"%1\$s\" already exists.\n\n" + ::msgcat::mcset en "File \"%1\$s\" does not exist." + ::msgcat::mcset en "File name:" + ::msgcat::mcset en "File names:" + ::msgcat::mcset en "Files of type:" + ::msgcat::mcset en "Files:" + ::msgcat::mcset en "Filter" + ::msgcat::mcset en "Filter:" + ::msgcat::mcset en "Green" + ::msgcat::mcset en "Hi" + ::msgcat::mcset en "Hide Console" + ::msgcat::mcset en "Ignore" + ::msgcat::mcset en "Invalid file name \"%1\$s\"." + ::msgcat::mcset en "Log Files" + ::msgcat::mcset en "No" + ::msgcat::mcset en "OK" + ::msgcat::mcset en "Ok" + ::msgcat::mcset en "Open" + ::msgcat::mcset en "Open Multiple Files" + ::msgcat::mcset en "Paste" + ::msgcat::mcset en "Quit" + ::msgcat::mcset en "Red" + ::msgcat::mcset en "Replace existing file?" + ::msgcat::mcset en "Retry" + ::msgcat::mcset en "Save" + ::msgcat::mcset en "Save As" + ::msgcat::mcset en "Save To Log" + ::msgcat::mcset en "Select Log File" + ::msgcat::mcset en "Select a file to source" + ::msgcat::mcset en "Selection:" + ::msgcat::mcset en "Skip Messages" + ::msgcat::mcset en "Source..." + ::msgcat::mcset en "Tcl Scripts" + ::msgcat::mcset en "Tcl for Windows" + ::msgcat::mcset en "Text Files" + ::msgcat::mcset en "Yes" + ::msgcat::mcset en "abort" + ::msgcat::mcset en "blue" + ::msgcat::mcset en "cancel" + ::msgcat::mcset en "extension" + ::msgcat::mcset en "extensions" + ::msgcat::mcset en "green" + ::msgcat::mcset en "ignore" + ::msgcat::mcset en "ok" + ::msgcat::mcset en "red" + ::msgcat::mcset en "retry" + ::msgcat::mcset en "yes" +}
\ No newline at end of file diff --git a/library/msgs/es.msg b/library/msgs/es.msg index c269344..140b40d 100644 --- a/library/msgs/es.msg +++ b/library/msgs/es.msg @@ -1,67 +1,69 @@ -::msgcat::mcset es "Abort" "Abortar" -::msgcat::mcset es "About..." "Acerca de ..." -::msgcat::mcset es "All Files" "Todos los archivos" -::msgcat::mcset es "Application Error" "Error de la aplicaci\u00f3n" -::msgcat::mcset es "Blue" "Azul" -::msgcat::mcset es "Cancel" "Cancelar" -::msgcat::mcset es "Cannot change to the directory \"%1\$s\".\nPermission denied." "No es posible acceder al directorio \"%1\$s\".\nPermiso denegado." -::msgcat::mcset es "Choose Directory" "Elegir directorio" -::msgcat::mcset es "Clear" "Borrar" -::msgcat::mcset es "Color" "Color" -::msgcat::mcset es "Console" "Consola" -::msgcat::mcset es "Copy" "Copiar" -::msgcat::mcset es "Cut" "Cortar" -::msgcat::mcset es "Delete" "Borrar" -::msgcat::mcset es "Details >>" "Detalles >>" -::msgcat::mcset es "Directory \"%1\$s\" does not exist." "El directorio \"%1\$s\" no existe." -::msgcat::mcset es "Directory:" "Directorio:" -::msgcat::mcset es "Error: %1\$s" "Error: %1\$s" -::msgcat::mcset es "Exit" "Salir" -::msgcat::mcset es "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "El archivo \"%1\$s\" ya existe.\nDesea sobreescribirlo?" -::msgcat::mcset es "File \"%1\$s\" already exists.\n\n" "El archivo \"%1\$s\" ya existe.\n\n" -::msgcat::mcset es "File \"%1\$s\" does not exist." "El archivo \"%1\$s\" no existe." -::msgcat::mcset es "File name:" "Nombre de archivo:" -::msgcat::mcset es "File names:" "Nombres de archivo:" -::msgcat::mcset es "Files of type:" "Archivos de tipo:" -::msgcat::mcset es "Files:" "Archivos:" -::msgcat::mcset es "Filter" "Filtro" -::msgcat::mcset es "Filter:" "Filtro:" -::msgcat::mcset es "Green" "Verde" -::msgcat::mcset es "Hi" "Hola" -::msgcat::mcset es "Hide Console" "Esconder la consola" -::msgcat::mcset es "Ignore" "Ignorar" -::msgcat::mcset es "Invalid file name \"%1\$s\"." "Nombre de archivo inv\u00e1lido \"%1\$s\"." -::msgcat::mcset es "Log Files" "Ficheros de traza" -::msgcat::mcset es "No" "No" -::msgcat::mcset es "OK" "OK" -::msgcat::mcset es "Ok" "Ok" -::msgcat::mcset es "Open" "Abrir" -::msgcat::mcset es "Open Multiple Files" "Abrir m\u00faltiples archivos" -::msgcat::mcset es "Paste" "Pegar" -::msgcat::mcset es "Quit" "Abandonar" -::msgcat::mcset es "Red" "Rojo" -::msgcat::mcset es "Replace existing file?" "Reemplazar el archivo existente?" -::msgcat::mcset es "Retry" "Reintentar" -::msgcat::mcset es "Save" "Salvar" -::msgcat::mcset es "Save As" "Salvar como" -::msgcat::mcset es "Save To Log" "Salvar al archivo de traza" -::msgcat::mcset es "Select Log File" "Elegir un archivo de traza" -::msgcat::mcset es "Select a file to source" "Seleccionar un archivo a evaluar" -::msgcat::mcset es "Selection:" "Selecci\u00f3n:" -::msgcat::mcset es "Skip Messages" "Omitir los mensajes" -::msgcat::mcset es "Source..." "Evaluar..." -::msgcat::mcset es "Tcl Scripts" "Scripts Tcl" -::msgcat::mcset es "Tcl for Windows" "Tcl para Windows" -::msgcat::mcset es "Text Files" "Archivos de texto" -::msgcat::mcset es "Yes" "Si" -::msgcat::mcset es "abort" "abortar" -::msgcat::mcset es "blue" "azul" -::msgcat::mcset es "cancel" "cancelar" -::msgcat::mcset es "extension" "extensi\u00f3n" -::msgcat::mcset es "extensions" "extensiones" -::msgcat::mcset es "green" "verde" -::msgcat::mcset es "ignore" "ignorar" -::msgcat::mcset es "ok" "ok" -::msgcat::mcset es "red" "rojo" -::msgcat::mcset es "retry" "reintentar" -::msgcat::mcset es "yes" "si" +namespace eval ::tk { + ::msgcat::mcset es "Abort" "Abortar" + ::msgcat::mcset es "About..." "Acerca de ..." + ::msgcat::mcset es "All Files" "Todos los archivos" + ::msgcat::mcset es "Application Error" "Error de la aplicaci\u00f3n" + ::msgcat::mcset es "Blue" "Azul" + ::msgcat::mcset es "Cancel" "Cancelar" + ::msgcat::mcset es "Cannot change to the directory \"%1\$s\".\nPermission denied." "No es posible acceder al directorio \"%1\$s\".\nPermiso denegado." + ::msgcat::mcset es "Choose Directory" "Elegir directorio" + ::msgcat::mcset es "Clear" "Borrar" + ::msgcat::mcset es "Color" "Color" + ::msgcat::mcset es "Console" "Consola" + ::msgcat::mcset es "Copy" "Copiar" + ::msgcat::mcset es "Cut" "Cortar" + ::msgcat::mcset es "Delete" "Borrar" + ::msgcat::mcset es "Details >>" "Detalles >>" + ::msgcat::mcset es "Directory \"%1\$s\" does not exist." "El directorio \"%1\$s\" no existe." + ::msgcat::mcset es "Directory:" "Directorio:" + ::msgcat::mcset es "Error: %1\$s" "Error: %1\$s" + ::msgcat::mcset es "Exit" "Salir" + ::msgcat::mcset es "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "El archivo \"%1\$s\" ya existe.\nDesea sobreescribirlo?" + ::msgcat::mcset es "File \"%1\$s\" already exists.\n\n" "El archivo \"%1\$s\" ya existe.\n\n" + ::msgcat::mcset es "File \"%1\$s\" does not exist." "El archivo \"%1\$s\" no existe." + ::msgcat::mcset es "File name:" "Nombre de archivo:" + ::msgcat::mcset es "File names:" "Nombres de archivo:" + ::msgcat::mcset es "Files of type:" "Archivos de tipo:" + ::msgcat::mcset es "Files:" "Archivos:" + ::msgcat::mcset es "Filter" "Filtro" + ::msgcat::mcset es "Filter:" "Filtro:" + ::msgcat::mcset es "Green" "Verde" + ::msgcat::mcset es "Hi" "Hola" + ::msgcat::mcset es "Hide Console" "Esconder la consola" + ::msgcat::mcset es "Ignore" "Ignorar" + ::msgcat::mcset es "Invalid file name \"%1\$s\"." "Nombre de archivo inv\u00e1lido \"%1\$s\"." + ::msgcat::mcset es "Log Files" "Ficheros de traza" + ::msgcat::mcset es "No" "No" + ::msgcat::mcset es "OK" "OK" + ::msgcat::mcset es "Ok" "Ok" + ::msgcat::mcset es "Open" "Abrir" + ::msgcat::mcset es "Open Multiple Files" "Abrir m\u00faltiples archivos" + ::msgcat::mcset es "Paste" "Pegar" + ::msgcat::mcset es "Quit" "Abandonar" + ::msgcat::mcset es "Red" "Rojo" + ::msgcat::mcset es "Replace existing file?" "Reemplazar el archivo existente?" + ::msgcat::mcset es "Retry" "Reintentar" + ::msgcat::mcset es "Save" "Salvar" + ::msgcat::mcset es "Save As" "Salvar como" + ::msgcat::mcset es "Save To Log" "Salvar al archivo de traza" + ::msgcat::mcset es "Select Log File" "Elegir un archivo de traza" + ::msgcat::mcset es "Select a file to source" "Seleccionar un archivo a evaluar" + ::msgcat::mcset es "Selection:" "Selecci\u00f3n:" + ::msgcat::mcset es "Skip Messages" "Omitir los mensajes" + ::msgcat::mcset es "Source..." "Evaluar..." + ::msgcat::mcset es "Tcl Scripts" "Scripts Tcl" + ::msgcat::mcset es "Tcl for Windows" "Tcl para Windows" + ::msgcat::mcset es "Text Files" "Archivos de texto" + ::msgcat::mcset es "Yes" "S\u00ed" + ::msgcat::mcset es "abort" "abortar" + ::msgcat::mcset es "blue" "azul" + ::msgcat::mcset es "cancel" "cancelar" + ::msgcat::mcset es "extension" "extensi\u00f3n" + ::msgcat::mcset es "extensions" "extensiones" + ::msgcat::mcset es "green" "verde" + ::msgcat::mcset es "ignore" "ignorar" + ::msgcat::mcset es "ok" "ok" + ::msgcat::mcset es "red" "rojo" + ::msgcat::mcset es "retry" "reintentar" + ::msgcat::mcset es "yes" "s\u00ed" +} diff --git a/library/msgs/fr.msg b/library/msgs/fr.msg index d0548aa..b885cd4 100644 --- a/library/msgs/fr.msg +++ b/library/msgs/fr.msg @@ -1,67 +1,69 @@ -::msgcat::mcset fr "Abort" "Annuler" -::msgcat::mcset fr "About..." "\u00c0 propos..." -::msgcat::mcset fr "All Files" "Tous les fichiers" -::msgcat::mcset fr "Application Error" "Erreur d'application" -::msgcat::mcset fr "Blue" "Bleu" -::msgcat::mcset fr "Cancel" "Annuler" -::msgcat::mcset fr "Cannot change to the directory \"%1\$s\".\nPermission denied." "Impossible d'acc\u00e9der au r\u00e9pertoire \"%1\$s\".\nPermission refus\u00e9e." -::msgcat::mcset fr "Choose Directory" "Choisir r\u00e9pertoire" -::msgcat::mcset fr "Clear" "Effacer" -::msgcat::mcset fr "Color" "Couleur" -::msgcat::mcset fr "Console" -::msgcat::mcset fr "Copy" "Copier" -::msgcat::mcset fr "Cut" "Couper" -::msgcat::mcset fr "Delete" "Effacer" -::msgcat::mcset fr "Details >>" "D\u00e9tails >>" -::msgcat::mcset fr "Directory \"%1\$s\" does not exist." -::msgcat::mcset fr "Directory:" "R\u00e9pertoire:" -::msgcat::mcset fr "Error: %1\$s" -::msgcat::mcset fr "Exit" -::msgcat::mcset fr "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Le fichier \"%1\$s\" existe d\u00e9j\u00e0.\nVoulez-vous l'\u00e9craser?" -::msgcat::mcset fr "File \"%1\$s\" already exists.\n\n" "Le fichier \"%1\$s\" existe d\u00e9j\u00e0.\n\n" -::msgcat::mcset fr "File \"%1\$s\" does not exist." "Le fichier \"%1\$s\" n'existe pas." -::msgcat::mcset fr "File name:" "Nom de fichier:" -::msgcat::mcset fr "File names:" "Noms de fichiers:" -::msgcat::mcset fr "Files of type:" "Type de fichiers:" -::msgcat::mcset fr "Files:" "Fichiers:" -::msgcat::mcset fr "Filter" "Filtre" -::msgcat::mcset fr "Filter:" "Filtre:" -::msgcat::mcset fr "Green" "Vert" -::msgcat::mcset fr "Hi" "All\u00f4" -::msgcat::mcset fr "Hide Console" "Cacher la Console" -::msgcat::mcset fr "Ignore" "Ignorer" -::msgcat::mcset fr "Invalid file name \"%1\$s\"." "Nom de fichier invalide \"%1\$s\"." -::msgcat::mcset fr "Log Files" "Fichiers de trace" -::msgcat::mcset fr "No" "Non" -::msgcat::mcset fr "OK" -::msgcat::mcset fr "Ok" -::msgcat::mcset fr "Open" "Ouvrir" -::msgcat::mcset fr "Open Multiple Files" "Ouvrir plusieurs fichiers" -::msgcat::mcset fr "Paste" "Coller" -::msgcat::mcset fr "Quit" "Abandonner" -::msgcat::mcset fr "Red" "Rouge" -::msgcat::mcset fr "Replace existing file?" "Remplacer fichier existant?" -::msgcat::mcset fr "Retry" "R\u00e9-essayer" -::msgcat::mcset fr "Save" "Sauvegarder" -::msgcat::mcset fr "Save As" "Sauvegarder sous" -::msgcat::mcset fr "Save To Log" "Sauvegarde au fichier de trace" -::msgcat::mcset fr "Select Log File" "Choisir un fichier de trace" -::msgcat::mcset fr "Select a file to source" "Choisir un fichier \u00e0 \u00e9valuer" -::msgcat::mcset fr "Selection:" "S\u00e9lection:" -::msgcat::mcset fr "Skip Messages" "Omettre les messages" -::msgcat::mcset fr "Source..." "\u00c9valuer..." -::msgcat::mcset fr "Tcl Scripts" "Scripts Tcl" -::msgcat::mcset fr "Tcl for Windows" "Tcl pour Windows" -::msgcat::mcset fr "Text Files" "Fichiers texte" -::msgcat::mcset fr "Yes" "Oui" -::msgcat::mcset fr "abort" "annuler" -::msgcat::mcset fr "blue" "bleu" -::msgcat::mcset fr "cancel" "annuler" -::msgcat::mcset fr "extension" -::msgcat::mcset fr "extensions" -::msgcat::mcset fr "green" "vert" -::msgcat::mcset fr "ignore" "ignorer" -::msgcat::mcset fr "ok" -::msgcat::mcset fr "red" "rouge" -::msgcat::mcset fr "retry" "r\u00e9-essayer" -::msgcat::mcset fr "yes" "oui" +namespace eval ::tk { + ::msgcat::mcset fr "Abort" "Annuler" + ::msgcat::mcset fr "About..." "\u00c0 propos..." + ::msgcat::mcset fr "All Files" "Tous les fichiers" + ::msgcat::mcset fr "Application Error" "Erreur d'application" + ::msgcat::mcset fr "Blue" "Bleu" + ::msgcat::mcset fr "Cancel" "Annuler" + ::msgcat::mcset fr "Cannot change to the directory \"%1\$s\".\nPermission denied." "Impossible d'acc\u00e9der au r\u00e9pertoire \"%1\$s\".\nPermission refus\u00e9e." + ::msgcat::mcset fr "Choose Directory" "Choisir r\u00e9pertoire" + ::msgcat::mcset fr "Clear" "Effacer" + ::msgcat::mcset fr "Color" "Couleur" + ::msgcat::mcset fr "Console" + ::msgcat::mcset fr "Copy" "Copier" + ::msgcat::mcset fr "Cut" "Couper" + ::msgcat::mcset fr "Delete" "Effacer" + ::msgcat::mcset fr "Details >>" "D\u00e9tails >>" + ::msgcat::mcset fr "Directory \"%1\$s\" does not exist." + ::msgcat::mcset fr "Directory:" "R\u00e9pertoire:" + ::msgcat::mcset fr "Error: %1\$s" + ::msgcat::mcset fr "Exit" + ::msgcat::mcset fr "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Le fichier \"%1\$s\" existe d\u00e9j\u00e0.\nVoulez-vous l'\u00e9craser?" + ::msgcat::mcset fr "File \"%1\$s\" already exists.\n\n" "Le fichier \"%1\$s\" existe d\u00e9j\u00e0.\n\n" + ::msgcat::mcset fr "File \"%1\$s\" does not exist." "Le fichier \"%1\$s\" n'existe pas." + ::msgcat::mcset fr "File name:" "Nom de fichier:" + ::msgcat::mcset fr "File names:" "Noms de fichiers:" + ::msgcat::mcset fr "Files of type:" "Type de fichiers:" + ::msgcat::mcset fr "Files:" "Fichiers:" + ::msgcat::mcset fr "Filter" "Filtre" + ::msgcat::mcset fr "Filter:" "Filtre:" + ::msgcat::mcset fr "Green" "Vert" + ::msgcat::mcset fr "Hi" "All\u00f4" + ::msgcat::mcset fr "Hide Console" "Cacher la Console" + ::msgcat::mcset fr "Ignore" "Ignorer" + ::msgcat::mcset fr "Invalid file name \"%1\$s\"." "Nom de fichier invalide \"%1\$s\"." + ::msgcat::mcset fr "Log Files" "Fichiers de trace" + ::msgcat::mcset fr "No" "Non" + ::msgcat::mcset fr "OK" + ::msgcat::mcset fr "Ok" + ::msgcat::mcset fr "Open" "Ouvrir" + ::msgcat::mcset fr "Open Multiple Files" "Ouvrir plusieurs fichiers" + ::msgcat::mcset fr "Paste" "Coller" + ::msgcat::mcset fr "Quit" "Abandonner" + ::msgcat::mcset fr "Red" "Rouge" + ::msgcat::mcset fr "Replace existing file?" "Remplacer fichier existant?" + ::msgcat::mcset fr "Retry" "R\u00e9-essayer" + ::msgcat::mcset fr "Save" "Sauvegarder" + ::msgcat::mcset fr "Save As" "Sauvegarder sous" + ::msgcat::mcset fr "Save To Log" "Sauvegarde au fichier de trace" + ::msgcat::mcset fr "Select Log File" "Choisir un fichier de trace" + ::msgcat::mcset fr "Select a file to source" "Choisir un fichier \u00e0 \u00e9valuer" + ::msgcat::mcset fr "Selection:" "S\u00e9lection:" + ::msgcat::mcset fr "Skip Messages" "Omettre les messages" + ::msgcat::mcset fr "Source..." "\u00c9valuer..." + ::msgcat::mcset fr "Tcl Scripts" "Scripts Tcl" + ::msgcat::mcset fr "Tcl for Windows" "Tcl pour Windows" + ::msgcat::mcset fr "Text Files" "Fichiers texte" + ::msgcat::mcset fr "Yes" "Oui" + ::msgcat::mcset fr "abort" "annuler" + ::msgcat::mcset fr "blue" "bleu" + ::msgcat::mcset fr "cancel" "annuler" + ::msgcat::mcset fr "extension" + ::msgcat::mcset fr "extensions" + ::msgcat::mcset fr "green" "vert" + ::msgcat::mcset fr "ignore" "ignorer" + ::msgcat::mcset fr "ok" + ::msgcat::mcset fr "red" "rouge" + ::msgcat::mcset fr "retry" "r\u00e9-essayer" + ::msgcat::mcset fr "yes" "oui" +}
\ No newline at end of file diff --git a/library/msgs/it.msg b/library/msgs/it.msg index 756213e..189448f 100644 --- a/library/msgs/it.msg +++ b/library/msgs/it.msg @@ -1,68 +1,69 @@ -::msgcat::mcset it "Abort" "Interrompi" -::msgcat::mcset it "About..." "Informazioni ..." -::msgcat::mcset it "All Files" "Tutti i file" -::msgcat::mcset it "Application Error" "Errore dell' applicazione" -::msgcat::mcset it "Blue" "Blu" -::msgcat::mcset it "Cancel" "Annulla" -::msgcat::mcset it "Cannot change to the directory \"%1\$s\".\nPermission denied." "Impossibile accedere alla directory \"%1\$s\".\nPermesso negato." -::msgcat::mcset it "Choose Directory" "Scegli directory" -::msgcat::mcset it "Clear" "Azzera" -::msgcat::mcset it "Color" "Colore" -::msgcat::mcset it "Console" -::msgcat::mcset it "Copy" "Copia" -::msgcat::mcset it "Cut" "Taglia" -::msgcat::mcset it "Delete" "Incolla" -::msgcat::mcset it "Details >>" "Dettagli >>" -::msgcat::mcset it "Directory \"%1\$s\" does not exist." "La directory \"%1\$s\" non esiste." -::msgcat::mcset it "Directory:" -::msgcat::mcset it "Error: %1\$s" "Errore: %1\$s" -::msgcat::mcset it "Exit" "Esci" -::msgcat::mcset it "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Il file \"%1\$s\" esiste gi\u00e0.\nVuoi sovrascriverlo?" -::msgcat::mcset it "File \"%1\$s\" already exists.\n\n" "Il file \"%1\$s\" esiste gi\u00e0.\n\n" -::msgcat::mcset it "File \"%1\$s\" does not exist." "Il file \"%1\$s\" non esiste." -::msgcat::mcset it "File name:" "Nome del file:" -::msgcat::mcset it "File names:" "Nomi dei file:" -::msgcat::mcset it "Files of type:" "File di tipo:" -::msgcat::mcset it "Files:" "File:" -::msgcat::mcset it "Filter" "Filtro" -::msgcat::mcset it "Filter:" "Filtro:" -::msgcat::mcset it "Green" "Verde" -::msgcat::mcset it "Hi" "Salve" -::msgcat::mcset it "Hide Console" "Nascondi la console" -::msgcat::mcset it "Ignore" "Ignora" -::msgcat::mcset it "Invalid file name \"%1\$s\"." "Nome di file non valido \"%1\$s\"." -::msgcat::mcset it "Log Files" "File di log" -::msgcat::mcset it "No" -::msgcat::mcset it "OK" -::msgcat::mcset it "Ok" -::msgcat::mcset it "Open" "Apri" -::msgcat::mcset it "Open Multiple Files" "Apri file multipli" -::msgcat::mcset it "Paste" "Incolla" -::msgcat::mcset it "Quit" "Esci" -::msgcat::mcset it "Red" "Rosso" -::msgcat::mcset it "Replace existing file?" "Sostituisci il file esistente?" -::msgcat::mcset it "Retry" "Riprova" -::msgcat::mcset it "Save" "Salva" -::msgcat::mcset it "Save As" "Salva come" -::msgcat::mcset it "Save To Log" "Salva il log" -::msgcat::mcset it "Select Log File" "Scegli un file di log" -::msgcat::mcset it "Select a file to source" "Scegli un file da eseguire" -::msgcat::mcset it "Selection:" "Selezione:" -::msgcat::mcset it "Skip Messages" "Salta i messaggi" -::msgcat::mcset it "Source..." "Esegui..." -::msgcat::mcset it "Tcl Scripts" "Scripts Tcl" -::msgcat::mcset it "Tcl for Windows" "Tcl per Windows" -::msgcat::mcset it "Text Files" "File di testo" -::msgcat::mcset it "Yes" "Si" -::msgcat::mcset it "abort" "interrompi" -::msgcat::mcset it "blue" "blu" -::msgcat::mcset it "cancel" "annulla" -::msgcat::mcset it "extension" "estensione" -::msgcat::mcset it "extensions" "estensioni" -::msgcat::mcset it "green" "verde" -::msgcat::mcset it "ignore" "ignora" -::msgcat::mcset it "ok" -::msgcat::mcset it "red" "rosso" -::msgcat::mcset it "retry" "riprova" -::msgcat::mcset it "yes" "si" - +namespace eval ::tk { + ::msgcat::mcset it "Abort" "Interrompi" + ::msgcat::mcset it "About..." "Informazioni ..." + ::msgcat::mcset it "All Files" "Tutti i file" + ::msgcat::mcset it "Application Error" "Errore dell' applicazione" + ::msgcat::mcset it "Blue" "Blu" + ::msgcat::mcset it "Cancel" "Annulla" + ::msgcat::mcset it "Cannot change to the directory \"%1\$s\".\nPermission denied." "Impossibile accedere alla directory \"%1\$s\".\nPermesso negato." + ::msgcat::mcset it "Choose Directory" "Scegli directory" + ::msgcat::mcset it "Clear" "Azzera" + ::msgcat::mcset it "Color" "Colore" + ::msgcat::mcset it "Console" + ::msgcat::mcset it "Copy" "Copia" + ::msgcat::mcset it "Cut" "Taglia" + ::msgcat::mcset it "Delete" "Incolla" + ::msgcat::mcset it "Details >>" "Dettagli >>" + ::msgcat::mcset it "Directory \"%1\$s\" does not exist." "La directory \"%1\$s\" non esiste." + ::msgcat::mcset it "Directory:" + ::msgcat::mcset it "Error: %1\$s" "Errore: %1\$s" + ::msgcat::mcset it "Exit" "Esci" + ::msgcat::mcset it "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Il file \"%1\$s\" esiste gi\u00e0.\nVuoi sovrascriverlo?" + ::msgcat::mcset it "File \"%1\$s\" already exists.\n\n" "Il file \"%1\$s\" esiste gi\u00e0.\n\n" + ::msgcat::mcset it "File \"%1\$s\" does not exist." "Il file \"%1\$s\" non esiste." + ::msgcat::mcset it "File name:" "Nome del file:" + ::msgcat::mcset it "File names:" "Nomi dei file:" + ::msgcat::mcset it "Files of type:" "File di tipo:" + ::msgcat::mcset it "Files:" "File:" + ::msgcat::mcset it "Filter" "Filtro" + ::msgcat::mcset it "Filter:" "Filtro:" + ::msgcat::mcset it "Green" "Verde" + ::msgcat::mcset it "Hi" "Salve" + ::msgcat::mcset it "Hide Console" "Nascondi la console" + ::msgcat::mcset it "Ignore" "Ignora" + ::msgcat::mcset it "Invalid file name \"%1\$s\"." "Nome di file non valido \"%1\$s\"." + ::msgcat::mcset it "Log Files" "File di log" + ::msgcat::mcset it "No" + ::msgcat::mcset it "OK" + ::msgcat::mcset it "Ok" + ::msgcat::mcset it "Open" "Apri" + ::msgcat::mcset it "Open Multiple Files" "Apri file multipli" + ::msgcat::mcset it "Paste" "Incolla" + ::msgcat::mcset it "Quit" "Esci" + ::msgcat::mcset it "Red" "Rosso" + ::msgcat::mcset it "Replace existing file?" "Sostituisci il file esistente?" + ::msgcat::mcset it "Retry" "Riprova" + ::msgcat::mcset it "Save" "Salva" + ::msgcat::mcset it "Save As" "Salva come" + ::msgcat::mcset it "Save To Log" "Salva il log" + ::msgcat::mcset it "Select Log File" "Scegli un file di log" + ::msgcat::mcset it "Select a file to source" "Scegli un file da eseguire" + ::msgcat::mcset it "Selection:" "Selezione:" + ::msgcat::mcset it "Skip Messages" "Salta i messaggi" + ::msgcat::mcset it "Source..." "Esegui..." + ::msgcat::mcset it "Tcl Scripts" "Scripts Tcl" + ::msgcat::mcset it "Tcl for Windows" "Tcl per Windows" + ::msgcat::mcset it "Text Files" "File di testo" + ::msgcat::mcset it "Yes" "Si" + ::msgcat::mcset it "abort" "interrompi" + ::msgcat::mcset it "blue" "blu" + ::msgcat::mcset it "cancel" "annulla" + ::msgcat::mcset it "extension" "estensione" + ::msgcat::mcset it "extensions" "estensioni" + ::msgcat::mcset it "green" "verde" + ::msgcat::mcset it "ignore" "ignora" + ::msgcat::mcset it "ok" + ::msgcat::mcset it "red" "rosso" + ::msgcat::mcset it "retry" "riprova" + ::msgcat::mcset it "yes" "si" +} diff --git a/library/msgs/nl.msg b/library/msgs/nl.msg index 019aacc..63f4746 100644 --- a/library/msgs/nl.msg +++ b/library/msgs/nl.msg @@ -1,103 +1,105 @@ -::msgcat::mcset nl "\"%1\$s\" must be an absolute pathname" "\"%1\$s\" moet een absolute pad-naam zijn" -::msgcat::mcset nl "%1\$s is not a toplevel window" "%1\$s is geen toplevel window" -::msgcat::mcset nl ", or" ", of" -::msgcat::mcset nl "-default, -icon, -message, -parent, -title, or -type" "-default, -icon, -message, -parent, -title, of -type" -::msgcat::mcset nl "-initialdir, -mustexist, -parent, or -title" "-initialdir, -mustexist, -parent, of -title" -::msgcat::mcset nl "Abort" "Afbreken" -::msgcat::mcset nl "About..." "Over..." -::msgcat::mcset nl "All Files" "Alle Bestanden" -::msgcat::mcset nl "Application Error" "Toepassingsfout" -::msgcat::mcset nl "Blue" "Blauw" -::msgcat::mcset nl "Cancel" "Annuleren" -::msgcat::mcset nl "Cannot change to the directory \"%1\$s\".\nPermission denied." "Kan niet naar map \"%1\$s\" gaan.\nU heeft geen toestemming hiervoor." -::msgcat::mcset nl "Choose Directory" "Kies map" -::msgcat::mcset nl "Clear" "Wissen" -::msgcat::mcset nl "Clear entry, Press OK; Enter %1\$s, press OK" "Wis veld, Druk op OK; Geef %1\$s in, druk op OK" -::msgcat::mcset nl "Color" "Kleur" -::msgcat::mcset nl "Console" -::msgcat::mcset nl "Copy" "Copi\u00ebren" -::msgcat::mcset nl "Cut" "Knippen" -::msgcat::mcset nl "Delete" "Wissen" -::msgcat::mcset nl "Details" -::msgcat::mcset nl "Details >>" -::msgcat::mcset nl "Directory \"%1\$s\" does not exist." "Map \"%1\$s\" bestaat niet." -::msgcat::mcset nl "Directory:" "Map:" -::msgcat::mcset nl "Enter \"%1\$s\", press OK" "Toets \"%1\$s\", druk op OK" -::msgcat::mcset nl "Enter \"%1\$s\", press OK, enter \"%2\$s\", press OK" "Toets \"%1\$s\", druk op OK, toets \"%2\$s\", druk op OK" -::msgcat::mcset nl "Error: %1\$s" "Fout: %1\$s" -::msgcat::mcset nl "Exit" "Be\u00ebindigen" -::msgcat::mcset nl "File \"%1\$s\" already exists.\n\n" "Bestand \"%1\$s\" bestaat al.\n\n" -::msgcat::mcset nl "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Bestand \"%1\$s\" bestaat al.\nWilt u het overschrijven?" -::msgcat::mcset nl "File \"%1\$s\" does not exist." "Bestand \"%1\$s\" bestaat niet." -::msgcat::mcset nl "File name:" "Bestandsnaam:" -::msgcat::mcset nl "File names:" "Bestandsnamen:" -::msgcat::mcset nl "Files of type:" "Bestanden van het type:" -::msgcat::mcset nl "Files:" "Bestanden:" -::msgcat::mcset nl "Filter" -::msgcat::mcset nl "Filter:" -::msgcat::mcset nl "Green" "Groen" -::msgcat::mcset nl "Hi" "H\u00e9" -::msgcat::mcset nl "Hide Console" "Verberg Console" -::msgcat::mcset nl "Ignore" -::msgcat::mcset nl "Invalid file name \"%1\$s\"." "Ongeldige bestandsnaam \"%1\$s\"." -::msgcat::mcset nl "Log Files" "Log Bestanden" -::msgcat::mcset nl "No" "Nee" -::msgcat::mcset nl "OK" -::msgcat::mcset nl "Ok" -::msgcat::mcset nl "Open" "Openen" -::msgcat::mcset nl "Open Multiple Files" "Open meerdere bestanden" -::msgcat::mcset nl "Paste" "Plakken" -::msgcat::mcset nl "Please press %1\$s" "Druk op %1\$s, A.U.B." -::msgcat::mcset nl "Please press ok" "Druk op ok, A.U.B." -::msgcat::mcset nl "Press Cancel" "Druk op Annuleren" -::msgcat::mcset nl "Press Ok" "Druk op Ok" -::msgcat::mcset nl "Quit" "Stoppen" -::msgcat::mcset nl "Red" "Rood" -::msgcat::mcset nl "Replace existing file?" "Vervang bestaand bestand?" -::msgcat::mcset nl "Retry" "Opnieuw" -::msgcat::mcset nl "Save" "Opslaan" -::msgcat::mcset nl "Save As" "Opslaan als" -::msgcat::mcset nl "Save To Log" "Opslaan naar Log" -::msgcat::mcset nl "Select Log File" "Selecteer Log bestand" -::msgcat::mcset nl "Select a file to source" "Selecteer bronbestand" -::msgcat::mcset nl "Selection:" "Selectie:" -::msgcat::mcset nl "Skip Messages" "Berichten overslaan" -::msgcat::mcset nl "Source..." "Bron..." -::msgcat::mcset nl "Tcl Scripts" -::msgcat::mcset nl "Tcl for Windows" "Tcl voor Windows" -::msgcat::mcset nl "Text Files" "Tekst Bestanden" -::msgcat::mcset nl "Yes" "Ja" -::msgcat::mcset nl "abort" "afbreken" -::msgcat::mcset nl "abort, retry, ignore, ok, cancel, no, or yes" "afbreken, opnieuw, negeren, ok, annuleren, nee, of ja" -::msgcat::mcset nl "abortretryignore, ok, okcancel, retrycancel, yesno, or yesnocancel" "abortretryignore, ok, okcancel, retrycancel, yesno, of yesnocancel" -::msgcat::mcset nl "bad %1\$s value \"%2\$s\": must be %3\$s" "foutieve %1\$s waarde \"%2\$s\": moet zijn %3\$s" -::msgcat::mcset nl "bad file type \"%1\$s\", should be" "foutief bestandstype \"%1\$s\", moet zijn" -::msgcat::mcset nl "bad option \"%1\$s\": should be %2\$s" "foutieve optie \"%1\$s\": moet zijn %2\$s" -::msgcat::mcset nl "bad window path name \"%1\$s\"" "foutieve window pad naam \"%1\$s\"" -::msgcat::mcset nl "blue" "blauw" -::msgcat::mcset nl "can't post %1\$s: it isn't a descendant of %2\$s (this is a new requirement in Tk versions 3.0 and later)" "kan %1\$s niet verzenden: het is geen afstammeling van %2\$s (dit is een niewe verplichting in Tk versies 3.0 en later)" -::msgcat::mcset nl "cancel" "annuleren" -::msgcat::mcset nl "default button index greater than number of buttons specified for tk_dialog" "default knop index is groter dan het aantal knoppen beschikbaar voor tk_dialog" -::msgcat::mcset nl "display name to use (current one otherwise)" "te gebruiken schermnaam (anders huidige scherm)" -::msgcat::mcset nl "error, info, question, or warning" "error, info, question, of warning" -::msgcat::mcset nl "extension" -::msgcat::mcset nl "extensions" -::msgcat::mcset nl "focus group \"%1\$s\" doesn't exist" "focus groep \"%1\$s\" bestaat niet" -::msgcat::mcset nl "green" "groen" -::msgcat::mcset nl "history event %1\$s" -::msgcat::mcset nl "ignore" "negeren" -::msgcat::mcset nl "invalid default button \"%1\$s\"" "ongeldige default knop \"%1\$s\"" -::msgcat::mcset nl "macType" -::msgcat::mcset nl "macTypes" -::msgcat::mcset nl "must specify a background color" "een achtergrondkleur is verplicht" -::msgcat::mcset nl "name of the slave interpreter" "naam van de slaaf interpreter" -::msgcat::mcset nl "no winfo screen . nor env(DISPLAY)" "geen winfo scherm . noch env(DISPLAY)" -::msgcat::mcset nl "ok" -::msgcat::mcset nl "red" "rood" -::msgcat::mcset nl "retry" "opnieuw" -::msgcat::mcset nl "should contain 5 or 4 elements" "moet 4 of 5 elementen bevatten" -::msgcat::mcset nl "spec" -::msgcat::mcset nl "tk_chooseDirectory command" "tk_chooseDirectory commando" -::msgcat::mcset nl "tk_chooseDirectory command, cancel gives null" "tk_chooseDirectory commando, annuleren geeft lege waarde" -::msgcat::mcset nl "tk_chooseDirectory command, initialdir" "tk_chooseDirectory commando, initi\u00eble map" -::msgcat::mcset nl "yes" "ja" +namespace eval ::tk { + ::msgcat::mcset nl "\"%1\$s\" must be an absolute pathname" "\"%1\$s\" moet een absolute pad-naam zijn" + ::msgcat::mcset nl "%1\$s is not a toplevel window" "%1\$s is geen toplevel window" + ::msgcat::mcset nl ", or" ", of" + ::msgcat::mcset nl "-default, -icon, -message, -parent, -title, or -type" "-default, -icon, -message, -parent, -title, of -type" + ::msgcat::mcset nl "-initialdir, -mustexist, -parent, or -title" "-initialdir, -mustexist, -parent, of -title" + ::msgcat::mcset nl "Abort" "Afbreken" + ::msgcat::mcset nl "About..." "Over..." + ::msgcat::mcset nl "All Files" "Alle Bestanden" + ::msgcat::mcset nl "Application Error" "Toepassingsfout" + ::msgcat::mcset nl "Blue" "Blauw" + ::msgcat::mcset nl "Cancel" "Annuleren" + ::msgcat::mcset nl "Cannot change to the directory \"%1\$s\".\nPermission denied." "Kan niet naar map \"%1\$s\" gaan.\nU heeft geen toestemming hiervoor." + ::msgcat::mcset nl "Choose Directory" "Kies map" + ::msgcat::mcset nl "Clear" "Wissen" + ::msgcat::mcset nl "Clear entry, Press OK; Enter %1\$s, press OK" "Wis veld, Druk op OK; Geef %1\$s in, druk op OK" + ::msgcat::mcset nl "Color" "Kleur" + ::msgcat::mcset nl "Console" + ::msgcat::mcset nl "Copy" "Copi\u00ebren" + ::msgcat::mcset nl "Cut" "Knippen" + ::msgcat::mcset nl "Delete" "Wissen" + ::msgcat::mcset nl "Details" + ::msgcat::mcset nl "Details >>" + ::msgcat::mcset nl "Directory \"%1\$s\" does not exist." "Map \"%1\$s\" bestaat niet." + ::msgcat::mcset nl "Directory:" "Map:" + ::msgcat::mcset nl "Enter \"%1\$s\", press OK" "Toets \"%1\$s\", druk op OK" + ::msgcat::mcset nl "Enter \"%1\$s\", press OK, enter \"%2\$s\", press OK" "Toets \"%1\$s\", druk op OK, toets \"%2\$s\", druk op OK" + ::msgcat::mcset nl "Error: %1\$s" "Fout: %1\$s" + ::msgcat::mcset nl "Exit" "Be\u00ebindigen" + ::msgcat::mcset nl "File \"%1\$s\" already exists.\n\n" "Bestand \"%1\$s\" bestaat al.\n\n" + ::msgcat::mcset nl "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Bestand \"%1\$s\" bestaat al.\nWilt u het overschrijven?" + ::msgcat::mcset nl "File \"%1\$s\" does not exist." "Bestand \"%1\$s\" bestaat niet." + ::msgcat::mcset nl "File name:" "Bestandsnaam:" + ::msgcat::mcset nl "File names:" "Bestandsnamen:" + ::msgcat::mcset nl "Files of type:" "Bestanden van het type:" + ::msgcat::mcset nl "Files:" "Bestanden:" + ::msgcat::mcset nl "Filter" + ::msgcat::mcset nl "Filter:" + ::msgcat::mcset nl "Green" "Groen" + ::msgcat::mcset nl "Hi" "H\u00e9" + ::msgcat::mcset nl "Hide Console" "Verberg Console" + ::msgcat::mcset nl "Ignore" + ::msgcat::mcset nl "Invalid file name \"%1\$s\"." "Ongeldige bestandsnaam \"%1\$s\"." + ::msgcat::mcset nl "Log Files" "Log Bestanden" + ::msgcat::mcset nl "No" "Nee" + ::msgcat::mcset nl "OK" + ::msgcat::mcset nl "Ok" + ::msgcat::mcset nl "Open" "Openen" + ::msgcat::mcset nl "Open Multiple Files" "Open meerdere bestanden" + ::msgcat::mcset nl "Paste" "Plakken" + ::msgcat::mcset nl "Please press %1\$s" "Druk op %1\$s, A.U.B." + ::msgcat::mcset nl "Please press ok" "Druk op ok, A.U.B." + ::msgcat::mcset nl "Press Cancel" "Druk op Annuleren" + ::msgcat::mcset nl "Press Ok" "Druk op Ok" + ::msgcat::mcset nl "Quit" "Stoppen" + ::msgcat::mcset nl "Red" "Rood" + ::msgcat::mcset nl "Replace existing file?" "Vervang bestaand bestand?" + ::msgcat::mcset nl "Retry" "Opnieuw" + ::msgcat::mcset nl "Save" "Opslaan" + ::msgcat::mcset nl "Save As" "Opslaan als" + ::msgcat::mcset nl "Save To Log" "Opslaan naar Log" + ::msgcat::mcset nl "Select Log File" "Selecteer Log bestand" + ::msgcat::mcset nl "Select a file to source" "Selecteer bronbestand" + ::msgcat::mcset nl "Selection:" "Selectie:" + ::msgcat::mcset nl "Skip Messages" "Berichten overslaan" + ::msgcat::mcset nl "Source..." "Bron..." + ::msgcat::mcset nl "Tcl Scripts" + ::msgcat::mcset nl "Tcl for Windows" "Tcl voor Windows" + ::msgcat::mcset nl "Text Files" "Tekst Bestanden" + ::msgcat::mcset nl "Yes" "Ja" + ::msgcat::mcset nl "abort" "afbreken" + ::msgcat::mcset nl "abort, retry, ignore, ok, cancel, no, or yes" "afbreken, opnieuw, negeren, ok, annuleren, nee, of ja" + ::msgcat::mcset nl "abortretryignore, ok, okcancel, retrycancel, yesno, or yesnocancel" "abortretryignore, ok, okcancel, retrycancel, yesno, of yesnocancel" + ::msgcat::mcset nl "bad %1\$s value \"%2\$s\": must be %3\$s" "foutieve %1\$s waarde \"%2\$s\": moet zijn %3\$s" + ::msgcat::mcset nl "bad file type \"%1\$s\", should be" "foutief bestandstype \"%1\$s\", moet zijn" + ::msgcat::mcset nl "bad option \"%1\$s\": should be %2\$s" "foutieve optie \"%1\$s\": moet zijn %2\$s" + ::msgcat::mcset nl "bad window path name \"%1\$s\"" "foutieve window pad naam \"%1\$s\"" + ::msgcat::mcset nl "blue" "blauw" + ::msgcat::mcset nl "can't post %1\$s: it isn't a descendant of %2\$s (this is a new requirement in Tk versions 3.0 and later)" "kan %1\$s niet verzenden: het is geen afstammeling van %2\$s (dit is een niewe verplichting in Tk versies 3.0 en later)" + ::msgcat::mcset nl "cancel" "annuleren" + ::msgcat::mcset nl "default button index greater than number of buttons specified for tk_dialog" "default knop index is groter dan het aantal knoppen beschikbaar voor tk_dialog" + ::msgcat::mcset nl "display name to use (current one otherwise)" "te gebruiken schermnaam (anders huidige scherm)" + ::msgcat::mcset nl "error, info, question, or warning" "error, info, question, of warning" + ::msgcat::mcset nl "extension" + ::msgcat::mcset nl "extensions" + ::msgcat::mcset nl "focus group \"%1\$s\" doesn't exist" "focus groep \"%1\$s\" bestaat niet" + ::msgcat::mcset nl "green" "groen" + ::msgcat::mcset nl "history event %1\$s" + ::msgcat::mcset nl "ignore" "negeren" + ::msgcat::mcset nl "invalid default button \"%1\$s\"" "ongeldige default knop \"%1\$s\"" + ::msgcat::mcset nl "macType" + ::msgcat::mcset nl "macTypes" + ::msgcat::mcset nl "must specify a background color" "een achtergrondkleur is verplicht" + ::msgcat::mcset nl "name of the slave interpreter" "naam van de slaaf interpreter" + ::msgcat::mcset nl "no winfo screen . nor env(DISPLAY)" "geen winfo scherm . noch env(DISPLAY)" + ::msgcat::mcset nl "ok" + ::msgcat::mcset nl "red" "rood" + ::msgcat::mcset nl "retry" "opnieuw" + ::msgcat::mcset nl "should contain 5 or 4 elements" "moet 4 of 5 elementen bevatten" + ::msgcat::mcset nl "spec" + ::msgcat::mcset nl "tk_chooseDirectory command" "tk_chooseDirectory commando" + ::msgcat::mcset nl "tk_chooseDirectory command, cancel gives null" "tk_chooseDirectory commando, annuleren geeft lege waarde" + ::msgcat::mcset nl "tk_chooseDirectory command, initialdir" "tk_chooseDirectory commando, initi\u00eble map" + ::msgcat::mcset nl "yes" "ja" +} diff --git a/library/panedwindow.tcl b/library/panedwindow.tcl index 1a6e493..1ef5bf8 100644 --- a/library/panedwindow.tcl +++ b/library/panedwindow.tcl @@ -3,7 +3,7 @@ # This file defines the default bindings for Tk panedwindow widgets and # provides procedures that help in implementing those bindings. # -# RCS: @(#) $Id: panedwindow.tcl,v 1.5.4.1 2002/06/10 05:07:59 wolfsuit Exp $ +# RCS: @(#) $Id: panedwindow.tcl,v 1.5.4.2 2002/06/10 05:38:24 wolfsuit Exp $ # bind PanedWindow <Button-1> { ::tk::panedwindow::MarkSash %W %x %y 1 } diff --git a/library/scale.tcl b/library/scale.tcl index ac891be..bb4c81f 100644 --- a/library/scale.tcl +++ b/library/scale.tcl @@ -3,7 +3,7 @@ # This file defines the default bindings for Tk scale widgets and provides # procedures that help in implementing the bindings. # -# RCS: @(#) $Id: scale.tcl,v 1.8 2001/08/01 16:21:11 dgp Exp $ +# RCS: @(#) $Id: scale.tcl,v 1.8.2.1 2002/06/10 05:38:24 wolfsuit Exp $ # # Copyright (c) 1994 The Regents of the University of California. # Copyright (c) 1994-1995 Sun Microsystems, Inc. @@ -62,6 +62,14 @@ bind Scale <ButtonRelease-2> { tk::ScaleEndDrag %W tk::ScaleActivate %W %x %y } +if {[string equal $tcl_platform(platform) "windows"]} { + # On Windows do the same with button 3, as that is the right mouse button + bind Scale <3> [bind Scale <2>] + bind Scale <B3-Motion> [bind Scale <B2-Motion>] + bind Scale <B3-Leave> [bind Scale <B2-Leave>] + bind Scale <B3-Enter> [bind Scale <B2-Enter>] + bind Scale <ButtonRelease-3> [bind Scale <ButtonRelease-2>] +} bind Scale <Control-1> { tk::ScaleControlPress %W %x %y } diff --git a/library/tclIndex b/library/tclIndex index 72ac96e..711fe32 100644 --- a/library/tclIndex +++ b/library/tclIndex @@ -7,10 +7,10 @@ # a script that loads the command. set auto_index(::tk::dialog::error::Return) [list source [file join $dir bgerror.tcl]] -set auto_index(::tk::dialog::error::details) [list source [file join $dir bgerror.tcl]] -set auto_index(::tk::dialog::error::evalFunction) [list source [file join $dir bgerror.tcl]] -set auto_index(::tk::dialog::error::saveToLog) [list source [file join $dir bgerror.tcl]] +set auto_index(::tk::dialog::error::Details) [list source [file join $dir bgerror.tcl]] +set auto_index(::tk::dialog::error::SaveToLog) [list source [file join $dir bgerror.tcl]] set auto_index(::tk::dialog::error::Destroy) [list source [file join $dir bgerror.tcl]] +set auto_index(::tk::dialog::error::bgerror) [list source [file join $dir bgerror.tcl]] set auto_index(bgerror) [list source [file join $dir bgerror.tcl]] set auto_index(::tk::ButtonInvoke) [list source [file join $dir button.tcl]] set auto_index(::tk::ButtonAutoInvoke) [list source [file join $dir button.tcl]] diff --git a/library/text.tcl b/library/text.tcl index 110f87e..ff72300 100644 --- a/library/text.tcl +++ b/library/text.tcl @@ -3,7 +3,7 @@ # This file defines the default bindings for Tk text widgets and provides # procedures that help in implementing the bindings. # -# RCS: @(#) $Id: text.tcl,v 1.17.2.2 2002/02/05 02:25:16 wolfsuit Exp $ +# RCS: @(#) $Id: text.tcl,v 1.17.2.3 2002/06/10 05:38:24 wolfsuit Exp $ # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1997 Sun Microsystems, Inc. @@ -54,13 +54,11 @@ bind Text <Double-1> { set tk::Priv(selectMode) word tk::TextSelectTo %W %x %y catch {%W mark set insert sel.last} - catch {%W mark set anchor sel.first} } bind Text <Triple-1> { set tk::Priv(selectMode) line tk::TextSelectTo %W %x %y catch {%W mark set insert sel.last} - catch {%W mark set anchor sel.first} } bind Text <Shift-1> { tk::TextResetAnchor %W @%x,%y @@ -258,7 +256,7 @@ bind Text <<Clear>> { bind Text <<PasteSelection>> { if {$tk_strictMotif || ![info exists tk::Priv(mouseMoved)] || !$tk::Priv(mouseMoved)} { - tk::TextPaste %W %x %y + tk::TextPasteSelection %W %x %y } } bind Text <Insert> { @@ -630,7 +628,7 @@ proc ::tk::TextKeyExtend {w index} { $w tag remove sel $last end } -# ::tk::TextPaste -- +# ::tk::TextPasteSelection -- # This procedure sets the insertion cursor to the mouse position, # inserts the selection, and sets the focus to the window. # @@ -638,16 +636,15 @@ proc ::tk::TextKeyExtend {w index} { # w - The text window. # x, y - Position of the mouse. -proc ::tk::TextPaste {w x y} { +proc ::tk::TextPasteSelection {w x y} { $w mark set insert [TextClosestGap $w $x $y] - catch {$w insert insert [::tk::GetSelection $w PRIMARY]} - catch { + if {![catch {::tk::GetSelection $w PRIMARY} sel]} { set oldSeparator [$w cget -autoseparators] if {$oldSeparator} { $w configure -autoseparators 0 $w edit separator } - $w insert insert [::tk::GetSelection $w PRIMARY] + $w insert insert $sel if {$oldSeparator} { $w edit separator $w configure -autoseparators 1 @@ -1002,7 +999,7 @@ proc ::tk_textCut w { proc ::tk_textPaste w { global tcl_platform - catch { + if {![catch {::tk::GetSelection $w CLIPBOARD} sel]} { set oldSeparator [$w cget -autoseparators] if { $oldSeparator } { $w configure -autoseparators 0 @@ -1011,7 +1008,7 @@ proc ::tk_textPaste w { if {[string compare $tcl_platform(windowingsystem) "x11"]} { catch { $w delete sel.first sel.last } } - $w insert insert [::tk::GetSelection $w CLIPBOARD] + $w insert insert $sel if { $oldSeparator } { $w edit separator $w configure -autoseparators 1 diff --git a/library/tk.tcl b/library/tk.tcl index e8154e8..06c9898 100644 --- a/library/tk.tcl +++ b/library/tk.tcl @@ -3,7 +3,7 @@ # Initialization script normally executed in the interpreter for each # Tk-based application. Arranges class bindings for widgets. # -# RCS: @(#) $Id: tk.tcl,v 1.31.2.2 2002/02/05 02:25:16 wolfsuit Exp $ +# RCS: @(#) $Id: tk.tcl,v 1.31.2.3 2002/06/10 05:38:24 wolfsuit Exp $ # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -16,9 +16,36 @@ package require -exact Tk 8.4 package require -exact Tcl 8.4 -if { ![interp issafe] } { - package require msgcat - ::msgcat::mcload [file join $::tk_library msgs] + +# Create a ::tk namespace +namespace eval ::tk { + # Set up the msgcat commands + namespace eval msgcat { + namespace export mc mcmax + if {[interp issafe] || [catch {package require msgcat}]} { + # The msgcat package is not available. Supply our own + # minimal replacement. + proc mc {src args} { + return [eval [list format $src] $args] + } + proc mcmax {args} { + set max 0 + foreach string $args { + set len [string length $string] + if {$len>$max} { + set max $len + } + } + return $max + } + } else { + # Get the commands from the msgcat package that Tk uses. + namespace import ::msgcat::mc + namespace import ::msgcat::mcmax + ::msgcat::mcload [file join $::tk_library msgs] + } + } + namespace import ::tk::msgcat::* } # Add Tk's directory to the end of the auto-load search path, if it @@ -38,11 +65,6 @@ set ::tk_strictMotif 0 catch {tk useinputmethods 1} -# Create a ::tk namespace - -namespace eval ::tk { -} - # ::tk::PlaceWindow -- # place a toplevel at a particular position # Arguments: @@ -326,10 +348,10 @@ switch $tcl_platform(windowingsystem) { switch $tcl_platform(os) { "IRIX" - "Linux" { event add <<PrevWindow>> <ISO_Left_Tab> } - "HP-UX" { - # This seems to be correct on *some* HP systems. - catch { event add <<PrevWindow>> <hpBackTab> } - } + "HP-UX" { + # This seems to be correct on *some* HP systems. + catch { event add <<PrevWindow>> <hpBackTab> } + } } } trace variable ::tk_strictMotif w ::tk::EventMotifBindings @@ -360,22 +382,37 @@ switch $tcl_platform(windowingsystem) { event add <<Redo>> <Control-Key-Z> } } - # ---------------------------------------------------------------------- # Read in files that define all of the class bindings. # ---------------------------------------------------------------------- -if {[string compare $tcl_platform(platform) "macintosh"] && \ - [string compare {} $tk_library]} { - source [file join $::tk_library button.tcl] - source [file join $::tk_library entry.tcl] - source [file join $::tk_library listbox.tcl] - source [file join $::tk_library menu.tcl] - source [file join $::tk_library scale.tcl] - source [file join $::tk_library scrlbar.tcl] - source [file join $::tk_library spinbox.tcl] - source [file join $::tk_library text.tcl] -} +if {$::tk_library ne ""} { + if {[string equal $tcl_platform(platform) "macintosh"]} { + proc ::tk::SourceLibFile {file} { + if {[catch { + namespace eval :: \ + [list source [file join $::tk_library $file.tcl]] + }]} { + namespace eval :: [list source -rsrc $file] + } + } + } else { + proc ::tk::SourceLibFile {file} { + namespace eval :: [list source [file join $::tk_library $file.tcl]] + } + } + namespace eval ::tk { + SourceLibFile button + SourceLibFile entry + SourceLibFile listbox + SourceLibFile menu + SourceLibFile panedwindow + SourceLibFile scale + SourceLibFile scrlbar + SourceLibFile spinbox + SourceLibFile text + } +} # ---------------------------------------------------------------------- # Default bindings for keyboard traversal. # ---------------------------------------------------------------------- diff --git a/library/tkfbox.tcl b/library/tkfbox.tcl index 280762d..160555a 100644 --- a/library/tkfbox.tcl +++ b/library/tkfbox.tcl @@ -11,7 +11,7 @@ # files by clicking on the file icons or by entering a filename # in the "Filename:" entry. # -# RCS: @(#) $Id: tkfbox.tcl,v 1.31.2.1 2002/02/05 02:25:16 wolfsuit Exp $ +# RCS: @(#) $Id: tkfbox.tcl,v 1.31.2.2 2002/06/10 05:38:24 wolfsuit Exp $ # # Copyright (c) 1994-1998 Sun Microsystems, Inc. # @@ -766,7 +766,9 @@ proc ::tk::IconList_Reset {w} { #---------------------------------------------------------------------- namespace eval ::tk::dialog {} -namespace eval ::tk::dialog::file {} +namespace eval ::tk::dialog::file { + namespace import ::tk::msgcat::* +} # ::tk::dialog::file:: -- # @@ -925,9 +927,9 @@ proc ::tk::dialog::file::Config {dataName type argList} { if {$data(-title) == ""} { if {[string equal $type "open"]} { - set data(-title) "[::msgcat::mc "Open"]" + set data(-title) "[mc "Open"]" } else { - set data(-title) "[::msgcat::mc "Save As"]" + set data(-title) "[mc "Save As"]" } } @@ -977,7 +979,7 @@ proc ::tk::dialog::file::Create {w class} { # f1: the frame with the directory option menu # set f1 [frame $w.f1] - label $f1.lab -text "[::msgcat::mc "Directory:"]" -under 0 + label $f1.lab -text "[mc "Directory:"]" -under 0 set data(dirMenuBtn) $f1.menu set data(dirMenu) [tk_optionMenu $f1.menu [format %s(selectPath) ::tk::dialog::file::$dataName] ""] set data(upBtn) [button $f1.up] @@ -1005,17 +1007,17 @@ static char updir_bits[] = { # if { [string equal $class TkFDialog] } { if { $data(-multiple) } { - set fNameCaption "[::msgcat::mc {File names:}]" + set fNameCaption "[mc {File names:}]" } else { - set fNameCaption "[::msgcat::mc {File name:}]" + set fNameCaption "[mc {File name:}]" } - set fTypeCaption [::msgcat::mc "Files of type:"] - set fCaptionWidth [::msgcat::mcmax $fNameCaption $fTypeCaption] + set fTypeCaption [mc "Files of type:"] + set fCaptionWidth [mcmax $fNameCaption $fTypeCaption] set fCaptionWidth [expr {$fCaptionWidth<14?14:$fCaptionWidth}] set fNameUnder 5 set iconListCommand [list ::tk::dialog::file::OkCmd $w] } else { - set fNameCaption [::msgcat::mc "Selection:"] + set fNameCaption [mc "Selection:"] set fNameUnder 0 set fCaptionWidth [string length $fNameCaption] set iconListCommand [list ::tk::dialog::file::chooseDir::DblClick $w] @@ -1068,11 +1070,11 @@ static char updir_bits[] = { # the okBtn is created after the typeMenu so that the keyboard traversal # is in the right order - set maxWidth [::msgcat::mcmax OK Cancel] + set maxWidth [mcmax OK Cancel] set maxWidth [expr {$maxWidth<6?6:$maxWidth}] - set data(okBtn) [button $f2.ok -text "[::msgcat::mc "OK"]" \ + set data(okBtn) [button $f2.ok -text "[mc "OK"]" \ -under 0 -width $maxWidth -default active -pady 3] - set data(cancelBtn) [button $f3.cancel -text "[::msgcat::mc "Cancel"]" \ + set data(cancelBtn) [button $f3.cancel -text "[mc "Cancel"]" \ -under 0 -width $maxWidth -default normal -pady 3] # pack the widgets in f2 and f3 @@ -1148,9 +1150,9 @@ proc ::tk::dialog::file::SetSelectMode {w multi} { set dataName __tk_filedialog upvar ::tk::dialog::file::$dataName data if { $multi } { - set fNameCaption "[::msgcat::mc {File names:}]" + set fNameCaption "[mc {File names:}]" } else { - set fNameCaption "[::msgcat::mc {File name:}]" + set fNameCaption "[mc {File name:}]" } set fNameUnder 5 set iconListCommand [list ::tk::dialog::file::OkCmd $w] @@ -1222,7 +1224,7 @@ rSASvJTGhnhcV3EJlo3kh53ltF5nAhQAOw==}] # we normally won't come to here. Anyways, give an error and abort # action. tk_messageBox -type ok -parent $w -message \ - "[::msgcat::mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $data(selectPath)]"\ + "[mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $data(selectPath)]"\ -icon warning cd $appPWD return @@ -1305,15 +1307,15 @@ rSASvJTGhnhcV3EJlo3kh53ltF5nAhQAOw==}] # Restore the Open/Save Button if this is a File Dialog # if {[string equal $data(type) open]} { - $data(okBtn) config -text "[::msgcat::mc "Open"]" - set maxWidth [string length [::msgcat::mc "Open"]] + $data(okBtn) config -text "[mc "Open"]" + set maxWidth [string length [mc "Open"]] if {$maxWidth>[$data(okBtn) cget -width]} { $data(okBtn) config -width $maxWidth $data(cancelBtn) config -width $maxWidth } } else { - $data(okBtn) config -text "[::msgcat::mc "Save"]" - set maxWidth [string length [::msgcat::mc "Save"]] + $data(okBtn) config -text "[mc "Save"]" + set maxWidth [string length [mc "Save"]] if {$maxWidth>[$data(okBtn) cget -width]} { $data(okBtn) config -width $maxWidth $data(cancelBtn) config -width $maxWidth @@ -1506,9 +1508,9 @@ proc ::tk::dialog::file::EntFocusIn {w} { if { [string equal [winfo class $w] TkFDialog] } { # If this is a File Dialog, make sure the buttons are labeled right. if {[string equal $data(type) open]} { - $data(okBtn) config -text "[::msgcat::mc "Open"]" + $data(okBtn) config -text "[mc "Open"]" } else { - $data(okBtn) config -text "[::msgcat::mc "Save"]" + $data(okBtn) config -text "[mc "Save"]" } } } @@ -1575,7 +1577,7 @@ proc ::tk::dialog::file::VerifyFileName {w filename} { FILE { if {[string equal $data(type) open]} { tk_messageBox -icon warning -type ok -parent $w \ - -message "[::msgcat::mc "File \"%1\$s\" does not exist." [file join $path $file]]" + -message "[mc "File \"%1\$s\" does not exist." [file join $path $file]]" $data(ent) selection range 0 end $data(ent) icursor end } else { @@ -1590,20 +1592,20 @@ proc ::tk::dialog::file::VerifyFileName {w filename} { } PATH { tk_messageBox -icon warning -type ok -parent $w \ - -message "[::msgcat::mc "Directory \"%1\$s\" does not exist." $path]" + -message "[mc "Directory \"%1\$s\" does not exist." $path]" $data(ent) selection range 0 end $data(ent) icursor end } CHDIR { tk_messageBox -type ok -parent $w -message \ - "[::msgcat::mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $path]"\ + "[mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $path]"\ -icon warning $data(ent) selection range 0 end $data(ent) icursor end } ERROR { tk_messageBox -type ok -parent $w -message \ - "[::msgcat::mc "Invalid file name \"%1\$s\"." $path]"\ + "[mc "Invalid file name \"%1\$s\"." $path]"\ -icon warning $data(ent) selection range 0 end $data(ent) icursor end @@ -1708,14 +1710,14 @@ proc ::tk::dialog::file::ListBrowse {w} { if { [string equal [winfo class $w] TkFDialog] } { if {[string equal $data(type) open]} { - $data(okBtn) config -text "[::msgcat::mc "Open"]" + $data(okBtn) config -text "[mc "Open"]" } else { - $data(okBtn) config -text "[::msgcat::mc "Save"]" + $data(okBtn) config -text "[mc "Save"]" } } } else { if { [string equal [winfo class $w] TkFDialog] } { - $data(okBtn) config -text "[::msgcat::mc "Open"]" + $data(okBtn) config -text "[mc "Open"]" } } } @@ -1738,7 +1740,7 @@ proc ::tk::dialog::file::ListInvoke {w filenames} { set appPWD [pwd] if {[catch {cd $file}]} { tk_messageBox -type ok -parent $w -message \ - "[::msgcat::mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $file]"\ + "[mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $file]"\ -icon warning } else { cd $appPWD @@ -1785,7 +1787,7 @@ proc ::tk::dialog::file::Done {w {selectFilePath ""}} { if {[file exists $selectFilePath]} { set reply [tk_messageBox -icon warning -type yesno\ -parent $w -message \ - "[::msgcat::mc "File \"%1\$s\" already exists.\nDo you want to overwrite it?" $selectFilePath]"] + "[mc "File \"%1\$s\" already exists.\nDo you want to overwrite it?" $selectFilePath]"] if {[string equal $reply "no"]} { return } diff --git a/library/xmfbox.tcl b/library/xmfbox.tcl index 8a188b3..64f4e5b 100644 --- a/library/xmfbox.tcl +++ b/library/xmfbox.tcl @@ -4,7 +4,7 @@ # Unix platform. This implementation is used only if the # "::tk_strictMotif" flag is set. # -# RCS: @(#) $Id: xmfbox.tcl,v 1.17.2.1 2002/02/05 02:25:16 wolfsuit Exp $ +# RCS: @(#) $Id: xmfbox.tcl,v 1.17.2.2 2002/06/10 05:38:24 wolfsuit Exp $ # # Copyright (c) 1996 Sun Microsystems, Inc. # Copyright (c) 1998-2000 Scriptics Corporation @@ -237,12 +237,12 @@ proc ::tk::MotifFDialog_Config {dataName type argList} { if {[string equal $data(-title) ""]} { if {[string equal $type "open"]} { if {$data(-multiple) != 0} { - set data(-title) "[::msgcat::mc {Open Multiple Files}]" + set data(-title) "[mc {Open Multiple Files}]" } else { - set data(-title) [::msgcat::mc "Open"] + set data(-title) [mc "Open"] } } else { - set data(-title) [::msgcat::mc "Save As"] + set data(-title) [mc "Save As"] } } @@ -323,7 +323,7 @@ proc ::tk::MotifFDialog_BuildUI {w} { # The Filter box # - label $f1.lab -text [::msgcat::mc "Filter:"] -under 3 -anchor w + label $f1.lab -text [mc "Filter:"] -under 3 -anchor w entry $f1.ent pack $f1.lab -side top -fill x -padx 6 -pady 4 pack $f1.ent -side top -fill x -padx 4 -pady 0 @@ -332,13 +332,13 @@ proc ::tk::MotifFDialog_BuildUI {w} { # The file and directory lists # set data(dList) [MotifFDialog_MakeSList $w $f2a \ - [::msgcat::mc "Directory:"] 0 DList] + [mc "Directory:"] 0 DList] set data(fList) [MotifFDialog_MakeSList $w $f2b \ - [::msgcat::mc "Files:"] 2 FList] + [mc "Files:"] 2 FList] # The Selection box # - label $f3.lab -text [::msgcat::mc "Selection:"] -under 0 -anchor w + label $f3.lab -text [mc "Selection:"] -under 0 -anchor w entry $f3.ent pack $f3.lab -side top -fill x -padx 6 -pady 0 pack $f3.ent -side top -fill x -padx 4 -pady 4 @@ -346,15 +346,15 @@ proc ::tk::MotifFDialog_BuildUI {w} { # The buttons # - set maxWidth [::msgcat::mcmax OK Filter Cancel] + set maxWidth [mcmax OK Filter Cancel] set maxWidth [expr {$maxWidth<6?6:$maxWidth}] - set data(okBtn) [button $bot.ok -text [::msgcat::mc "OK"] \ + set data(okBtn) [button $bot.ok -text [mc "OK"] \ -width $maxWidth -under 0 \ -command [list tk::MotifFDialog_OkCmd $w]] - set data(filterBtn) [button $bot.filter -text [::msgcat::mc "Filter"] \ + set data(filterBtn) [button $bot.filter -text [mc "Filter"] \ -width $maxWidth -under 0 \ -command [list tk::MotifFDialog_FilterCmd $w]] - set data(cancelBtn) [button $bot.cancel -text [::msgcat::mc "Cancel"] \ + set data(cancelBtn) [button $bot.cancel -text [mc "Cancel"] \ -width $maxWidth -under 0 \ -command [list tk::MotifFDialog_CancelCmd $w]] @@ -812,7 +812,7 @@ proc ::tk::MotifFDialog_ActivateSEnt {w} { set item [file join $data(selectPath) $item] } elseif {![file exists [file dirname $item]]} { tk_messageBox -icon warning -type ok \ - -message [::msgcat::mc {Directory "%1$s" does not exist.} \ + -message [mc {Directory "%1$s" does not exist.} \ [file dirname $item]] return } @@ -820,16 +820,16 @@ proc ::tk::MotifFDialog_ActivateSEnt {w} { if {![file exists $item]} { if {[string equal $data(type) open]} { tk_messageBox -icon warning -type ok \ - -message [::msgcat::mc {File "$item" does not exist.} \ + -message [mc {File "$item" does not exist.} \ $item] return } } else { if {[string equal $data(type) save]} { set message [format %s%s \ - [::msgcat::mc {File "%1$s" already exists.\n\n} \ + [mc {File "%1$s" already exists.\n\n} \ $selectFilePath ] \ - [::msgcat::mc {Replace existing file?}]] + [mc {Replace existing file?}]] set answer [tk_messageBox -icon warning -type yesno \ -message $message] if {[string equal $answer "no"]} { @@ -3,7 +3,7 @@ Tk 8.4 for Macintosh Originally by Ray Johnson while at Sun Microsystems Labs with major help from Jim Ingham while at Cygnus Solutions -RCS: @(#) $Id: README,v 1.16 2001/07/05 01:28:34 uid38172 Exp $ +RCS: @(#) $Id: README,v 1.16.2.1 2002/06/10 05:38:24 wolfsuit Exp $ 1. Introduction --------------- @@ -20,7 +20,7 @@ directory. There are several features or enhancements in Tk that are unique to the Macintosh version of Tk. The list of these features is maintained at - http://www.purl.org/tcl/home/software/mac/features.html + http://www.tcl.tk/software/mac/features.html 4. The Distribution ------------------- diff --git a/mac/tkMacAppInit.c b/mac/tkMacAppInit.c index 73e592d..6e75718 100644 --- a/mac/tkMacAppInit.c +++ b/mac/tkMacAppInit.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacAppInit.c,v 1.12.8.1 2002/02/05 02:25:16 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacAppInit.c,v 1.12.8.2 2002/06/10 05:38:24 wolfsuit Exp $ */ #include <Gestalt.h> @@ -25,6 +25,7 @@ #include "tkMacInt.h" #include "tclInt.h" #include "tclMac.h" +#include "tclMacInt.h" #ifdef TK_TEST extern int Tktest_Init _ANSI_ARGS_((Tcl_Interp *interp)); @@ -49,6 +50,9 @@ void RemoveConsole _ANSI_ARGS_((void)); long WriteCharsToConsole _ANSI_ARGS_((char *buff, long n)); long ReadCharsFromConsole _ANSI_ARGS_((char *buff, long n)); extern char * __ttyname _ANSI_ARGS_((long fildes)); +int kbhit _ANSI_ARGS_((void)); +int getch _ANSI_ARGS_((void)); +void clrscr _ANSI_ARGS_((void)); short SIOUXHandleOneEvent _ANSI_ARGS_((EventRecord *event)); /* @@ -57,6 +61,10 @@ short SIOUXHandleOneEvent _ANSI_ARGS_((EventRecord *event)); static int MacintoshInit _ANSI_ARGS_((void)); static int SetupMainInterp _ANSI_ARGS_((Tcl_Interp *interp)); +static void SetupSIOUX _ANSI_ARGS_((void)); + +static int inMacExit = 0; +static pascal void NoMoreOutput() { inMacExit = 1; } /* *---------------------------------------------------------------------- @@ -319,6 +327,8 @@ SetupMainInterp( if (Tk_CreateConsoleWindow(interp) == TCL_ERROR) { goto error; } + SetupSIOUX(); + TclMacInstallExitToShellPatch(NoMoreOutput); } /* @@ -368,8 +378,15 @@ RemoveConsole(void) long WriteCharsToConsole(char *buffer, long n) { - TkConsolePrint(gStdoutInterp, TCL_STDOUT, buffer, n); - return n; + if (!inMacExit) { + Tcl_DString ds; + Tcl_ExternalToUtfDString(NULL, buffer, n, &ds); + TkConsolePrint(gStdoutInterp, TCL_STDOUT, Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); + Tcl_DStringFree(&ds); + return n; + } else { + return 0; + } } long @@ -390,8 +407,37 @@ __ttyname(long fildes) return (0L); } +int kbhit(void) +{ + return 0; +} + +int getch(void) +{ + return 0; +} + +void clrscr(void) +{ + return; +} + short SIOUXHandleOneEvent(EventRecord *event) { return 0; } +static void SetupSIOUX(void) { +#ifndef STATIC_BUILD + extern DLLIMPORT void SetupConsolePlugins(void*, void*, void*, void*, + void*, void*, void*, void*); + SetupConsolePlugins( &InstallConsole, + &RemoveConsole, + &WriteCharsToConsole, + &ReadCharsFromConsole, + &__ttyname, + &kbhit, + &getch, + &clrscr); +#endif +} diff --git a/mac/tkMacDefault.h b/mac/tkMacDefault.h index 7e13596..14f0a39 100644 --- a/mac/tkMacDefault.h +++ b/mac/tkMacDefault.h @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacDefault.h,v 1.11.2.1 2002/02/05 02:25:16 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacDefault.h,v 1.11.2.2 2002/06/10 05:38:24 wolfsuit Exp $ */ #ifndef _TKMACDEFAULT @@ -360,6 +360,40 @@ #define DEF_MESSAGE_WIDTH "0" /* + * Defaults for panedwindows + */ + +#define DEF_PANEDWINDOW_BG_COLOR NORMAL_BG +#define DEF_PANEDWINDOW_BG_MONO WHITE +#define DEF_PANEDWINDOW_BORDERWIDTH "2" +#define DEF_PANEDWINDOW_CURSOR "" +#define DEF_PANEDWINDOW_HANDLEPAD "8" +#define DEF_PANEDWINDOW_HANDLESIZE "8" +#define DEF_PANEDWINDOW_HEIGHT "" +#define DEF_PANEDWINDOW_OPAQUERESIZE "0" +#define DEF_PANEDWINDOW_ORIENT "horizontal" +#define DEF_PANEDWINDOW_RELIEF "flat" +#define DEF_PANEDWINDOW_SASHCURSOR "" +#define DEF_PANEDWINDOW_SASHPAD "2" +#define DEF_PANEDWINDOW_SASHRELIEF "raised" +#define DEF_PANEDWINDOW_SASHWIDTH "2" +#define DEF_PANEDWINDOW_SHOWHANDLE "0" +#define DEF_PANEDWINDOW_WIDTH "" + +/* + * Defaults for panedwindow panes + */ + +#define DEF_PANEDWINDOW_PANE_AFTER "" +#define DEF_PANEDWINDOW_PANE_BEFORE "" +#define DEF_PANEDWINDOW_PANE_HEIGHT "" +#define DEF_PANEDWINDOW_PANE_MINSIZE "0" +#define DEF_PANEDWINDOW_PANE_PADX "0" +#define DEF_PANEDWINDOW_PANE_PADY "0" +#define DEF_PANEDWINDOW_PANE_STICKY "nsew" +#define DEF_PANEDWINDOW_PANE_WIDTH "" + +/* * Defaults for scales: */ diff --git a/mac/tkMacDialog.c b/mac/tkMacDialog.c index 2b28b53..f5f54ad 100644 --- a/mac/tkMacDialog.c +++ b/mac/tkMacDialog.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacDialog.c,v 1.6.8.1 2002/02/05 02:25:16 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacDialog.c,v 1.6.8.2 2002/06/10 05:38:24 wolfsuit Exp $ */ #include <Gestalt.h> @@ -1050,17 +1050,10 @@ OpenEventProc( { NavMenuItemSpec *chosenItem; OpenFileData *ofd = (OpenFileData *) callBackUD; - static SInt32 otherEvent = ~(kNavCBCustomize|kNavCBStart|kNavCBTerminate - |kNavCBNewLocation|kNavCBShowDesktop|kNavCBSelectEntry|kNavCBAccept - |kNavCBCancel|kNavCBAdjustPreview); if (callBackSelector == kNavCBPopupMenuSelect) { chosenItem = (NavMenuItemSpec *) callBackParams->eventData.eventDataParms.param; ofd->curType = chosenItem->menuType; - } else if ( callBackSelector & otherEvent != 0) { - while (Tcl_DoOneEvent(TCL_IDLE_EVENTS|TCL_DONT_WAIT|TCL_WINDOW_EVENTS)) { - /* Empty Body */ - } } else if (callBackSelector == kNavCBEvent) { if (callBackParams->eventData.eventDataParms.event->what == updateEvt) { if (TkMacConvertEvent( callBackParams->eventData.eventDataParms.event)) { diff --git a/mac/tkMacDraw.c b/mac/tkMacDraw.c index f684976..409b5c1 100644 --- a/mac/tkMacDraw.c +++ b/mac/tkMacDraw.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacDraw.c,v 1.8 1999/12/14 06:52:56 hobbs Exp $ + * RCS: @(#) $Id: tkMacDraw.c,v 1.8.8.1 2002/06/10 05:38:24 wolfsuit Exp $ */ #include "tkInt.h" @@ -370,6 +370,9 @@ TkPutImage( pixmap.pmTable = NULL; pixmap.pmReserved = 0; pixmap.baseAddr = image->data; + if (image->bytes_per_line >= 0x4000) { + panic("TkImage too wide!"); + } pixmap.rowBytes = image->bytes_per_line | 0x8000; CopyBits((BitMap *) &pixmap, &((GrafPtr) destPort)->portBits, diff --git a/mac/tkMacInit.c b/mac/tkMacInit.c index 2fed200..7d5e38b 100644 --- a/mac/tkMacInit.c +++ b/mac/tkMacInit.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacInit.c,v 1.3.18.2 2002/02/05 02:25:16 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacInit.c,v 1.3.18.3 2002/06/10 05:38:24 wolfsuit Exp $ */ #include <Resources.h> @@ -75,28 +75,20 @@ proc sourcePath {file} {\n\ error $msg\n\ }\n\ sourcePath tk\n\ -sourcePath button\n\ sourcePath dialog\n\ -sourcePath entry\n\ sourcePath focus\n\ -sourcePath listbox\n\ -sourcePath menu\n\ sourcePath optMenu\n\ sourcePath palette\n\ -sourcePath scale\n\ -sourcePath scrlbar\n\ sourcePath tearoff\n\ -sourcePath text\n\ +if {[catch {package require msgcat}]} {sourcePath msgcat}\n\ sourcePath bgerror\n\ sourcePath msgbox\n\ sourcePath comdlg\n\ -sourcePath spinbox\n\ rename sourcePath {}\n\ rename tkInit {}\n\ } }\n\ tkInit"; - Tcl_SetVar2(interp, "tcl_platform", "windowingsystem", "classic", TCL_GLOBAL_ONLY); Tcl_DStringInit(&path); Tcl_DStringInit(&ds); @@ -122,11 +114,9 @@ tkInit"; argv[1] = "Tool Command Language"; Tcl_DStringInit(&libPath); Tcl_DStringAppend(&libPath, "tk", -1); - Tcl_DStringAppend(&libPath, TK_VERSION, -1); - argv[2] = Tcl_DStringValue(&libPath); - Tcl_JoinPath(3, argv, &path); + argv[2] = Tcl_DStringAppend(&libPath, TK_VERSION, -1); + libDir = Tcl_JoinPath(3, argv, &path); Tcl_DStringFree(&libPath); - libDir = Tcl_DStringValue(&path); } } if (libDir == NULL) { diff --git a/mac/tkMacKeyboard.c b/mac/tkMacKeyboard.c index 8c1bcc7..ebf0572 100644 --- a/mac/tkMacKeyboard.c +++ b/mac/tkMacKeyboard.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacKeyboard.c,v 1.6.8.1 2002/02/05 02:25:16 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacKeyboard.c,v 1.6.8.2 2002/06/10 05:38:24 wolfsuit Exp $ */ #include "tkInt.h" @@ -247,8 +247,7 @@ TkpGetString( len = 0; } } - Tcl_ExternalToUtfDString(NULL, string, len, dsPtr); - return Tcl_DStringValue(dsPtr); + return Tcl_ExternalToUtfDString(NULL, string, len, dsPtr); } /* diff --git a/mac/tkMacMenu.c b/mac/tkMacMenu.c index 4000785..5c29176 100644 --- a/mac/tkMacMenu.c +++ b/mac/tkMacMenu.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacMenu.c,v 1.20.2.2 2002/02/06 07:02:04 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacMenu.c,v 1.20.2.3 2002/06/10 05:38:24 wolfsuit Exp $ */ #include "tkMacInt.h" @@ -1405,17 +1405,9 @@ TkpPostMenu( TkMacHandleTearoffMenu(); result = TCL_OK; } + InvalidateMDEFRgns(); + RecursivelyClearActiveMenu(menuPtr); - /* - * Be careful, here. The command executed in handling the menu event - * could destroy the window. Don't try to do anything with it then. - */ - - if (menuPtr->tkwin) { - InvalidateMDEFRgns(); - RecursivelyClearActiveMenu(menuPtr); - } - inPostMenu--; } return result; diff --git a/mac/tkMacProjects.sea.hqx b/mac/tkMacProjects.sea.hqx index 403eda6..209db47 100644 --- a/mac/tkMacProjects.sea.hqx +++ b/mac/tkMacProjects.sea.hqx @@ -1,10 +1,10 @@ (This file must be converted with BinHex 4.0) -:%A4V6@&M8(*[DQ9MG(-ZFf9K!%&38%aKGA0d)3!!!52U!!'Se@H#8h4eCQC*G#! -SBbNa16Nh,6%j16JJ3@aKC'4TEL"6HA0dC@ec,#"*EQ-Z,#"SG(4`1Lm[Gj!$,Q& -XB@4ND@jcHA-ZBfpY,e0dG@CQ5A3[$3SD!!83!!%MkJ#3!h)!!3#3!h+8r!fPT9* -PFf9bGQ9NTD8!TC!%!3!!1!"%Y[&1mlEa6e`!N!d)iZ3!N!21!#T'#!!")a`!!Ld +:%A4V6@&M8(*[DQ9MG(-ZFf9K!%&38%aKGA0d)3!!!55`!!'FbmEa8h4eCQC*G#! +SBbNa16Nh,6)`-$%J3@aKC'4TEL"6HA0dC@ec,#"*EQ-Z,#"SG(4`1Lm[Gj!$,Q& +XB@4ND@jcHA-ZBfpY,e0dG@CQ5A3[$3SD!!83!!%NX!#3!h)!!3#3!h*$LJfPT9* +PFf9bGQ9NTD8!TC!%!3!!1!"%Y[&1mlEa6e`!N!d)([`!N!21!#T5+!!")q)!!Ld q)%*eD@aN!!#6j`"h!!-"K3)M!F$rN!3$([rirr$,4!!!J!#3"k@3"!%!!$8!4,3 -GFA1i)pb9!*!$FJ!")Y-!N!0b!!836`!!!5F!+N3L!!%KV!!',6iJG'X!!&%D!(d +GFA1ieiZ4!*!$FJ!")jN!N!0b!!A&[!!!!5F!+P"#!!%LFJ!',6iJG'X!!&%D!(d !%!(C!IS"`2q3"!)HrrMrm-Y!!!#!!*!(TC!%!3!!1J#!Y+(T3,G0'[)!N!21!!! 0p`#3!mi!#TmI!!#ULJ!!$()!N!32!&4VAde%48BZci!!!%#b68e3FN0A588"!2q 3"!#3#S"`!*!'3X(8V`#MIfe6h,C[6F[BU8PkVQmm&A9!cS#KIR"DLBeM9H,PPS9 @@ -157,3495 +157,3434 @@ M8Yr5c8Qc#mjeQM5B-Br!%0QP6kE5c*ME@Q"HN!$MA$aQLkf6'@Yj%kL`)Vbi,6# CB$dUpE6@FAP614b)9)08G0HbCXb3!,HrT,%F!1N5dkEq@i)b))mN'bRJd4KUXYr #cNU`&-!Cc"XU+he@PR5rbQK,9hrLDH8rB3XYpY)Blm#I*L!&''VDGf6!MJ2Ml[E c"(hYXh8YZJ3raeM-PQ-9USfdij2lI3TZ30'PE%'3!#519jQba!SN@A!1K"PJchi -5"6%hBD,TBP32lPBkr%L&kPZJkaIRkAZMBBrM!+@3"!%!!$i!J,5KkFDhfk"B!!! -0p`!!G3F!N!21!!kPa`!(VHF!!&Er!*!%$`"8DdaTBR*KFQPPFbl2J!!!3,*069" -b3eG*43%!rj!%!*!+J(!!N!C#`G6H#A*'`qFAP'bER8VP`Id"C@dq%6Ae`M-PcC5 -92qNQkh2iJcD3!&%jpFiej`'9j,Al4d),d[KXS8*)+0r##)pGGm5N'1K9Q0Sjk(E -Lld)fH5qL2020%2%!F1DeZ!NYphVS'Y6N"JjbE1)3PB"rkG"'kaK(L0A-583ISki -HPr)&CHHVeJEGXr0eVA#Ek%VfGemFAUL%G0K&CSm6!PRd,H%+,VkclM@G262[U3* -5UhG`+Abdbd@hrpI2cD,d&r,V!E)S)crS0`9%QB!0j+IJ,p&8Ik40[MV`S#&*$8X -jI(md'iEUA,M0'&m6&,jE(pae0+aGe[`F@0BG&Dd)6hNH2`!l2"#TF!8m%PT49,f -J9h"3&aZY6mUUR&5`KUGCI+!U88ci&@bj)$bUQLTYh*DT(9k+Xe+)TXf-MNBD#jC -%4+Ra5caVNIbTKCb-!+m1A6USf92"EAVDS%1F$(cDm63Pa4JaaB(N'3i(!e4jN3Q -136RBPVMH5GE`0'T8K0m9%EeZT2h)AhA'&I(RdT%K+MVJ`II5FZQ9J#pmQ`mZeN0 -fEiiKD)`BMNJ4U`+BI'*kFLhaMAA`d(ak+G6lQh'HK1!50i,NH1CKPY!A@I$c"p( -K+j-YHm`A"-+T9mVejE8C1ebj!6(rd1U0(Q4EK&Rr,hi93BZf,&a+N!!'&$%f8I( -Im-Lj40daF5qD[dAGQ5&armFDjH-94!ip%9'F5L#3!$cHk3hf[a!bqcDII0R[YK@ -kVPDESImj#mjBVhm9!-YPQM#$hrNX`*1aA`3h$-3aejNVf92D!hmmTlZR`5I-1ME -$IE+#J"'H83%,YXXEAXI1MI)`AP4XrS,6RiKLRLCDKT4`0E0rDcTR-Cf*#3rlb4a -J!echh1J!DI,Ge&45R$f4cS3hDGB#0T,"Q)DE56IV+1Mr4*`-Q@(Q(r*J"6J#b!' -K6L-+flb6!rj,(hB`hS3dY)`mbr$6JflhS%4ml"d#9YccES1b"1"@L53!9"kZF3M -Ed04%jM)[8`AVqU&MX4*2Jr9Nlie$p1SeGG+$$SK6*D@KFB*AU4'0f$TSBIm$Fm# -UpUf)$ie)D[(&M!%qII"!E2YpUJ"%jlT3YVEM@Cj4l39Q2'Q0Qcm-N`'J(&k0a6E -*5`3VqhBTjq*iqefLi6Jl9XZd02YDV[[!c@Yd!HZlJPb*A%kBqA3YQ%5YrS2YEUa -),CkS*Uc3YDfpipVU2bf2Drfe@''(@Z1mdLX1NX'JJ[mVAe!SNR&j9r[iXF5M-'1 -@HFB1MFD+3&)l#)`r*,2jY3d2m%P%IU2qj4me-aY1Ijef"'i&jF32E+$lFZ#X"d& --fHS)U[EhUS*+$E5FH('I!86dQG33hNRk)"5qa1556&pk-lE0fHQBb#8LUBCYXL[ -d%i9%$,*%Gq4X1j&!%eLaU8Vk%ZR9jYeFL$1JGq5VL*c@+jhVZ#fN(8Y8m*YZ"Zl -i$%Cd'QV-[S2XJp&Y'`9P[1pZJc[a!5p'4CFJ(*LeU&LG$D%iR[Mr&,U#DZCQ#ij -CF&`aVU2Rdd0-)BGGNMRe'-P!9S!Ddh`ThjBK*@mG-Ge#KFfqZ4"CE9'be$qSc6[ -q$pTS+Z[3GY2fhla9Dcc4#B+aGK3a3'8#l6Vp`)8D[ED&FEF'3',beIXrlA3S#eT -b9%%r--`jFEAp6%KlIV$K*m+C[RjY88cFjC!!SDAQcD"F9K58R@S#N!!5$3f,ei" -"ZL8i"*AKBQ[1qqhb#VBC-d"99LE8(e'EcB#S8kGNPp#Fj84@))3&LVCVfReVY@+ -8QTakMPS4#B%Nd3UQM569AqRJ0-fkdl"((JA+RPXmIFi,cJl2JMLrE+H)G6qfKPq -5qlh)lU`&mUF@'6$+EBpdRlU!4%ZG&1YcdPlRE6qfS8fqGPTQ+DZJf9Sf2JS-KQl -XFJXU+E"NTYekj'IFK!V)GS@lb!XMmm("&qYZlc*"@JR,EekhLE5NIA2V6'fpS8T -)AEm,Hf00*r$FXU"jVdLH@rR5XeCDE#8AGB84mlAX41()2S2RRT*E*,`'fcme+"k -Qc+-FA$*pe`UB#&Rq[j!!H00Qr'XE5eV!IKr'q0a"IS+A`19EL@mV@jF0I"kCC&" -LF#114kEK"83Z-Rpji6ZXrR&1BmFJfJJ!([adLi-a!S$K9fqKe4A$KF90A1"##X3 -#Q)pL2m6V9@pC'elR)AEmZheTF0"mKSi5BhqK-ACV-!(*fm9S,`3%VDJ`@PdTV#@ -Sq$LV#Ze5!hX1Fj-%$HPKH$F&![%lSR,F%IIS$GU`M5C%PRG5!`eV48VPUi*F@Gk -%rk)fJaRH#5qrBPlRB6r2Qi!53(5Xa'`K`0di-dajQkmdb&9(T5c+1#NI&JdiD$N -H%5$h`r'Pe%iAN!"[`EPKeXHD9TUeBj-mD*`2i4`X#$#'""50#'lrUNJ8RYDp0l$ -cm9l1Kk6D"b"k*E694*26&+GLlKe3bjT0&CrTKjF,Hjk9j))8iX&U)$X#4GQq0rl -(Mrp-h5*LB3LlFH'SU#lSCTUmYKj%G%JEEaRJ'6$pqk`(6!IPQR"5PeDp19*T9L8 -&1&GC$CfbPI)2hHQSTF$cGaLjVZ(kVfCX+&$Hpc3TkTk$DIU`-J8Pq`Z*BPI'F*( -QaZHBCVSP8ArFT-'A%L4%-!JT#'&AmBR'VpXaAM[ErKkhq%"dZ6fjRpTApej@Z61 -B)qii"k,#ZS,SqD-E+9#S4&dqEUc%aF-SZk88(Nb6U6q$pFrbc(B)'RFP9M+D`49 -i#[dJT@e2XhcA%4iXY4N-H2-im#"Mb`,YeK!IQKeF'0)1%Ak(cFaN0`&"#8VjYV0 -6-D'!JNCQfZ+p,+c+K'@q3YXBeQhp$FlYp`pmDAeY2QMT,a3RprdZ,LCj,`iY&A5 -J@LYh*XR5r2XjjPM6e4e%N!"KIepbXjf!IGB`I#9Ii$RDUq6!eS)aHS0A8pMh(&Y -5)QDE,,0&i#MjZTj(YAB48BK`jD5lp"%ZQ#&rAp`cS[ElGc(QDSl8`p"M**HLJNG -Xp)e6`$,R*I"%25lj$6Gja9`-'PZdiYeKGL3KGKRaVlG(SBH)3QrY%eJXj,I9G26 -Sa'Se,SqNYAb)BSDb5qckI*D"NBG#d[PYG+H*6$kMeHP*[VR59Q9D*5&Ad,4S$Ka -J9jYNqX0#SU'D+%JEeYN1J1Id@3J#jJPNSR*R!KMd+PZ,,p`&qc5)rcaVpD)+4TX -8GR&K8SilhLK(![$AT8L,(qF%C55JAFD3!)h*%A9f!eUMCcD3!11C[DP#&0$qNk[ -iZ'+Y`Gb#A0*5"&`BUX4ArdZ03Z(AcLTplKlT#(33I'haQN%*M-*30*cr!XU@Jrk --RpehB81'pQVrQI+aKTAYb`S"EHc9B)EC[Z$pS3Z'RMe(fRdN4*4d(*`*kN[26VL -CX+P6mb@M*qU1SEb*%bi6harmP(fi6JNBIf`f[k#ELIdNeYT'IrYKM0&#PM,Z5la -Al,TSGA31iSAXK`Q91Z($4+E)0#XVV9`9IlE`DR,pE$HkjXd)"U$ZP3FeY1!CkG) -A0e3-8RS2"EMEq!&#SYPXT&@1-QIk(9L&ceDhQrq)Hh)3faq-Y8%jPfNF2$4p*LQ -qa$+MjDIpdeRi3GA5VH5)rC!!ikUX!Q5pR+P'X2B&,)4PYm)SH0h+BFqS,cYGUYR -&L96c)4DHfJMX$NEbT[-b1b+"raDlG,R0(aZCSahP#53U)8bjp$Xe#5V-H##iD6R -)k%U3!$#9I6HD`0'rQNFGcHh`#fhj14H14SC9)Vr[Fb-GqYcbPrbUp&@JXBBj"l) -3IV)+eH@4qCV&2bB83"MTEVei%E%UGEij!Q,c3jcBM+QC4QPQdSjR#V8p#E3,L'0 -8Gm)RY)[(j&M9dEFDN!!B0bRf[G1B61K0dajB!1k[YJ9P#*YE+Z`JcPeqQ4@fp"i -BU!2R%$B'`"pbfh3@#'GQi!04`P3AM8VmBU"1PTC6V6#mY#S'b$1(D#r0Rf9A,@` -C!3QS#kdq[4PZNh6hLIN2QYd%rY'kSj!!$5Ell"*E2ES`RBqM5#bqr@!-`9T&"iN -KirBj,3UamTM2T'b&P`2&Qp)D#&"ZIKPl*U9X25r+BT4db@DaZE-V+A-`#ERJKkh -Sq-4X9fq5UE$T8ZCHL5)%EGBmdc@"FchD$$&q'"-Sa!lDM`pmhTH3!""E4kSpjUr -G'bLZLZd6+Y@(CkX4Dj[S1@cL!TcYEEiZ[m@Mh3%D!@r@&@h"dmD1%*p&!RB6aJC -H&fpQpi'AQ8p#JiT%b-4lXAX%f-Mmc6+F)5[0GiCi,Q8aFZl,3,eTHMGm)mIiVJf -U3J'AiS2"cCD(d8hpijBKiVf50c*1[ih8e"d#"F[)Y31IpmVRfZK4TaUN,i9)+eZ -F$BSdLUYXFiJY64YT&$EcHFeDZFYG88B!0PapdHm)Yer#la,c`*TIXAcUDcAaha` -#ZBc-#)Kmqf[f'I4&[Khj&qrC03b*MQM,Kf8I9q`9%"EDje9"[6R[jH!SbaK`C-P -S'"&+42eC6Z`P0M#(!)Ed1rrjX`2B)q0*FL9N[Y`R9Le'2TiQYibQ!1hkAej1!hD -GqmPkqL"$k9i2ee$+%VmApe8pJ(@(DGdq`BJ&Yf1e[@iB!F6&,q#5aeZ!`LK(3XE -E42`TACa"N96+YUr0ajl&+A[DF@J,iXEc+DFEhRC1cjl6%$`mPYR,)ecIXZ$r+"6 -%EkZRmRPaU@0E@PU"NpRVMMAN4C!!)0cjX"jZka)$l!rCG'2AbDPeZlACldA)"bH -LQmAmjl#8J95#Sj!!"c+EJU9L!FrP31Z9""P2E5MK2SG*)5&r"I-r'U9EErjS[I@ --lCd(1$,l8md&QfCUNR'AJ((eq`A)cL%)F`chY3C'pmcJ"1*mTr8i6eVCSZNHiLm -!d3m5RiX,)prRm,eBD"*FPeFabS2cB8V'')jrHS+m+fl[IZR4VBk"eX8iC44a!SC -pq@R%IX)'hY+Ic$ISY2a*YHGGG,4NU@*Nk6)jqBMb*QQfYK$JM[f3!)LA#j+h!4J -FSZZ@eFfGQ5PETSLcJ&j'1iq3!##(JbLh8%(#V,aYA@NVAm%5KCaDe`1P1IpmY1[ -p+MlD2*CS-rPSAlDj,4Bj'Yp(pbpJ-HF3'J9BF[AbPj!!`ekDMGJC36qU15J2"h, -b4R8T#KaQ1j,L#FbrXRQ*i"IX81'XU6(lF`-QC6dMKXN[-TiN"eN8k3Y+k'fQq`b -@Z34+!p'QFFGM3iS5L@S#LJh54J2jQMJpUrNdSB&+HD3TQX4#qN1lUCS4ZRLj0M# -@eSi,,AQDfPi,*[F5cfK8Hm2F,fjr-8kb+M`0!lRNlbUcad+fZ!$V(l%bqb`,'8f -2(q&AMQQ1!f1DTprmmaU0*i"8baA9+Ap,Bh9$hm*X[qQeZC3h)babjIRT,80jrIJ -A"#9lbe(mjjKhaJYNqlCb5UUqfp&Q4Hr886SPSF(EahCN+-FUdi3M)L4Y1aAL42D -S4$T2Tr)(Qb-RpU+-1YB8*FbA"0e#2$Q[fj%@JI5e9il&D(M6-JQGfkc[4+`1Nd* -VqIMZ"a`+1rhpmI"&%il8IQ,rQe-a#2$%@B`P[V*[am90EU'YV!`-%HZkr4Hj1IT -PML`NieMaCJXV(U`BUS'h$F*a)%cYT!FS#&j`Y18[EQipY0*,!6!Ih)1*JYH-4%Y -+@mkZ9VT*6--4aH@UqI5I3SLaV'$U6F'PcHqPVZHS4U`#-ES+!ajLX$c1#TC&U6B -qe!l5CJ[TkjcAcpj*A3JE,32lMh*C$hk+[Z03E,cLh!f*LQppF)TQm!,G-$`Q-A+ -(Dl$'*kQe0Rbm#aSVXi'F8#T1GGEJ60KfCV++$+@L4Hp*HN91BGTXQrNH4VC3*&- -$%R(QMFld`X%9'rZXVj,3"DU&0Z,kYP'SdP9eUiFfADmrM"cD@aG!3Rfq*,e#S*B -)AAjQB#jfIDFm@GQ#5PelRXA13Np1CdbC*DR#q3aZS[iANj'EX4D&HRbc38MUXFH -,h[q-GRDHpS-ZMi8J8G+aeUklGfMkTQZk1ap5!KGHaNTCS1,`'L&JrPYPXpK2lVm -LM-"lEqRmEXCB!#mTZqZI6YI@iHYHHdpU6F@4F%V,HDA(YdVqE&E,)H`4&r`!MFL -(4PG#,UD1Z!dJk(5Tl!8q+KF(AG2Y6,+CVhF)dCU1+Z9@99jXED)pfCMc&DSjBI[ -m2SZm$GT,"HhjFFB$X-TZ(JK+0C!!9fKY!amUfDBSmSRrR3PY,I`D+(Ul5De2i9D -GmaIT44'(pcf4!Ab5hrJhh(h2E3TH",kj23fS@@jCq2rlBe""-5INJeU2BSlB852 -1N!"`MJN@mr8F6-Ai'SaDC8mc6eY0,*BdVbf4)A%RJJiKX"0mllkV!Q5+-!jY@2K -32+NqNrh%+`XAYXK9U%)#TI'9@1GB&k!Kq,PTViT-hJ&V"1JH$6'BHXmk43$iLX& -J%1hA(@!%a6eqUMh@D23A,&j[`L[GKE22lJ#55`),i#cML,Yd)HKmN`"ki'Tk+*+ -$&@Yj4G@-aKreDQ+YXQcP"'m0DPVhlNZrHJqJ+&-!3"Y(+*`4-4h1el8BVrUfa2M -*GA2lZ[2h&aH*Y,0Mc##C@aiF[6ilMFfH1"kIT"N@+GN1eJ1`TrYF(pklp*2bSf1 -kUJcZ,eBNdPKhBX%rl`N,"!1N`J-T+8"-0DUL98L&6CC4Sie5!Yk`3kd%bq3,l6& -jc3FTMj*dY3%eUaN2)+fejq@I9rL3!)`'*H+Pf`p`DCqL2aM$,+)H566bh"8Mh@k -6LZjd@jj*AqXp,6cKi"X3NLcZ&R(0YE0DAX,-MfPrIc#(Jp`D19efFHJj'1$'C)5 -"*Yq8X#+#1J2Q"8'G,V(PTUAa!JA`(Ma9efpqe$"GKMe)8'HpU%EP!&5NLG[&b"8 -pq[5J*k1AG8YQBY3plP(R[$AXR!kmQ!h1D!,1L8NBiBVCQf26-EZF)5,%hRMUjQ) -+P4"c'Z!RbeJiZP-&-8)0r)!&5#V!&CVRe$YVpVI"6KcKVL3'm0&$-"+P'lEGNMG -5'k(*cK6eEB@SXYLNcEF-$RdFiTf)3VRb5[ViDrBCV#a&EU+0bHENPAprVX%(T26 --e)f!IN69$GKp551"IqC5C9mU&U%ZQ,%+@bbQ9T2*L%ADm2Ih8!R"SIThRNBM&Ld -A1VpK*f0'ET6BXXHJB3eq&0dH1"hGf8MEb%K6k,*F'm%dmj'SP25"!cm!P$ka-[L -aJ9iUVRHZS9$*5Z1"fb$M),@DNKqDmDRdB*-Bk4-2&*+l5eZIEk[JL@2K@MGhj)F -hLp+Mil2rI`JmFD,4RM'1)R@iYP[4@Y`F6RIZ"d`4QSp0Jdf&i$!SB3#NK4+KqU9 -UTT'GCrJ+e6X5B1b#,'Q68b),b0RSeCA(hk3App29NRSf4VLpS#3eqT!!B-ibDUR -N%CZ)-1%b$lJ*TRQ%Jd!d@Tf1aHRYa,0C!X6ldQh"25ar'@2N2f"3I!R9ER3@'A% -LGJ8,ED%&qYFDZ(iB1EDBUfh,[(Xk",M+hf-@EEZKX%H3!(Z'&D+*J)204Z`P+2S -jT2IbR,(eMU+CP-+$&qUe-H30cer6aAm$a)jaE!5,N31YU`&0+3IbRG40!A'*baH -*"L!+LJP4fU(bNADK1X,*-!NJ2+4jZE@)EmUdlXF[A5Jdm%bSShXcGmGpiMq(jlM -Qk"4+b-8*RTIj'pm0mZKfd%$jQKe*5Ma*mRQLqQM8CR)4EL##l-fIN!#e"ieeT(p -YN!#K)mJ6A`1$&5ETSUc$RYe@lCjYlIp9IcX43J(qQB(N+UcdYUAMAl%YZ'NUS8M -bamR&BZ9PNe*[$*U"k@'U+kd[4XGq1QiPBEqX'c5ekd1%0emR&H`Y,iaKdjlZIM* -(!ZL!-9dZ,3B@@`VcHEiFQif*cX@6AGQF[1mc"8LGkZ@0qCbH8eE!3Mb%lMErP0B -)-GK0ZZ"&e"f![FTRJ-`'64Q,qd@YM6GA$,NDUF5B0Bq#6UebU*Zh3P-`"b)K91I -N2TXh+a'mclCjUDk`mrVdI5l&#!5+l6Ejk$hT&+J5((iQ&+5dX`01Dc-4Ej9VCh' -kJ#4%ADfXI-[c!XS6drEU"+S6CmMa[D,jZb&JEGk3!!5NrJrZAY)``eZ0RXaC@N# -(jqkEXK$YAVQ1GcX5%BYG[jJ6h4irrdk1lYYmZXDEM,MZ5AH'3SAJP[qa[HGa'0' -dC#hP*@$ZcJY+flHGc`cQAkE9kKfX9Cjcc1*11dH'VcR-hFirk#-"R,4J1Bj,aXY -G#[-(&q+)*Im(2#SPM,+MpA2YCZIfZdkqjRBfG[iKd"0)6f1i&J0`"QB(h&3m0Xi -MAM0BSdP-!ecp&lc`Nf)Fh@@0d+k2pf5!d3$B`-4C4Q6TCiTj%,h`9lRVPB[VaZp -pMiKVG*D0#-+j0i(T%D,MaaK6Q%kEAq%U6GkRN@MC!qd$6NEd`,G6,$AfDFj5mId -!fSGeTff[GElC,4@i(Xab`dR-IVL+6L@6&IBF@#5SjAMH"q,+I'PX,1RdlilaN!# -abGLR62Yc*C'1mqAaE6Y1P1mD#$l(VF0Uh[IIaYADl5(Ym5"hX6C1dd8SYGAR,SG -Ki+"MN!!U&141BiT(*((EISU!r6e+*LYA-+Sfk@BaCp!()IUXZp6MqNZaHZGZZBk -SbL*4aYeM1i[iU3$a`SjXUVbr&(@R%pM(BFLD0`!,IA9##TV!K(l1E%-r0"q5cFd -&1X3%14qdX3'VY2Qjab-Mc1"'!GlAjq`5&ZDa6D-68U"UGKYbXjRLGXd+SMb`NAi -3"N(dH(pS,*f[G2UE(RJ%C,KBmAeZU%Y[Brbe(%NRJXYcS`ZVcT@`R%[4#b8HFA` -+%CpH&*P-["c%L1)8k`Q60J0l[5chPAR6@4qpQhU[R)$,e43ZihU!2E2h1)2I%1b -P&kIA(8M!N[S9DX*-M#,ITll$MEkf1irTYq&*%C&XlpF554)QV4HPH4YiBF&ap*e -&klCT,Rh&6CJkTJP[JiPMI-M&e[0VemQZ1(*A9P(*S8i@l8hQ#YT%5F4`S1Ga"Tl -r+%AjMLce$8RHlCQZC!jNJRC"cdPFlj9ID),HmC%Hi,U0c*!!I9eArPeS4#Kf+Aq -V&,lYrYr[`1Xme(YVZe"3V)Ri1*!!mAdkd9PKM$DAMU5`'SSN$Td'LP(`lfIdZYU -Yqb"(+2hC('-5lFHd,c!EddlN8BH[VV3ReZeZeD0,NVHj&NP%PXNAjeCrq611bL[ -EUB8[R$10%8faC162kU!eQSF(%Xm5M'GjrmUqqDD!jhAPh165Pp5ckp90[Eeq@B+ -+L!DQj5kTF,UmCbX5MihJ0&SbE$01r@-,q@+T8iCifH@3!)FejVGcCljRA1(NEN* -(*G'*Q15%4J%pUFQMcV*$Ae)@[AE`h1h!B46TGVQklThDE-r-*Q2Q6YFb6jTTK0h -8`N-ArhMIdAm(rlqGqE+@&&h+[eeqikR-+N36PfXi,ZSB)4,U"e00HL@2TqpmjdK -H2[l!UUH$q8`i`$3ML+b3!%Q0$r*qSY-BklTFFHPMIrU1,[G*a&r3kRP!Q''A5Jc -EKDMG9B"P85p3FZ#T0,d![E$3-h1TPR0JFbdZ,N@583"[&k`TG!3a04c3$(XiNL$ -m4TH%U&*VpIS[5'lLK'#-rbGm8+@%cT@K-(1!IaIMr'kRSr%[mQeTD[+M9Dc*G[" -2GJNZ69eAqHHbA-(LlFqeipp!E$-K#HeEp#R`-e5H9rR1iBQ96Xpb!TFU6e'%-`+ -(0ml4I[Ak`XP0mc-efh[PC,E[pP1A,P`X-lB*ff[-(-Z&-#YjBCPr3PfDH8ENG)` -%aJ(h*1(HL4Fkd,X+rYYrEiTe!52Ja[+lmXP@r%A1YlDX0Yp,3-Dc9mEKI")L3R' -'ReeUrb""USX%#rCFdA@YBVa!L&cKpA4LIk@B3XbL3-64$AHrNCJJf26)f6@6)'0 -@BH1%"aJ@89PYil'(5%2GP*apYk,88XLPTK2j@j6Ya5QN%SbTqb%6[[3Rb31BhN* -ed*SKFD@Jb-K+rm6#Fb62C(32bEI'&jCNi$(9Y4FMi%0A#McrpB"+9jcJG)%'iri -@%rY"fFi#RIS)SYIlA#)@Cb+k$'jbZ-#%ZZSHP@,bPf+)G-4@Y4H,T#FFrEdqVeD -65'NrXF'd!#YAYiKUNK8EUK249"RP#3E"HhZC)hL,$S1V6KE8HJXdjVMSPaQmQZp -Ill6[EQHN2[rKMp1FRm`#*%MCcdrVbT!!"#k4RDc8&`qckJZcbMH4)IjUjDJIa'd -JXdaUTdRHT""Khj163k2CdHljQa4L"`S!Y+hN0kIKN!#jEB6jd,LN'2r*!aZM4V- -erHNEdfcIe1FSlKNqq4dflMeke#Ca5UpaU50+RRJ103p%@L6amDRL+Lp"Vr0r4aX -ib!U*66H0Jii$XGh"2#1Pa2%*J0JYZ@lU!N#502Cce4+`$'Sm*aGqPV)1fXcVeIG -GV+K"A26BfaCSDf2B,P)2(rG"MKd'C5%FDJCCi`FP`KapY%Mqbrqq,Hh2rqR-rIq -UVl9V#i&MHE3N-$cM#!90,XXR@#`f)LHmhTMedC8i%cN9j$T@T'""VfYiD*TmL*f -F*6"TmGI%m-(k+qZNL@N[c"`@1DC2+pLaYT,qhUjkJ"hIapNmFi[be*6G&1CcBDC -%mbqDr)Kd8U6RE8Y-FDFB,HrAd3,ijpTj%D!'A1G,+5VHMl9YSP*#b)$Zep+E8K& -E2eaD4SlX*k)FKb55I%,jVT93AMh1BV`L68[0$DP*3jM%k9iUM9T(#)%l&DT!h(@ -4RF@j,KRVkqQb@,"J-+#8(j0$$(cQ`aF6h&b0Y5Gbch("e+S'XL&rpB8!G,lpDFS -XmJ#(B`'T*!QfbRP6"(al5CbXVfGj-5-X&c3'!IlC13D"-#!BH8i(IB6DCYpQdAG -+XKS2J3%%4pT-Y!ri!J)LPb13!0NAF18QXj!!6#QkXUSj4EJB(!@Q%*!!TS68Uq4 -D`NBV`K(8YG-MJjGj9JqSS'1TGBjB3*KG0-C)rEXP&PY&-pVAcm2ee!dQC83,&[! -qm$CQFX5dQQj4EG",Y*9ZK&GDYGKY+de5lalLJTq&bGqE$8VNR*N@NTl`%"!FjHk -9PiBpAmpGUbMC#)@FZ,1QMVF0Hd'eD8)!1`Ij`3(iSP98'QBfl2!!&1RY)LBYUL" -P+DV0X2YcZGFXbrKVE`6(d9%[UEjQbZ5TFb%!@1[&0jf$r-lRelV50+ZdfSfbBRQ -8UrP+4PH2pcD"M2@p4eheq'iZGipKiKUZd2(be`jrMJUQ4aK%1&9B)dhrQUrSA5G -3QbJV'$25$'k2Vi65F&Kh4R5Hj@"IlpF"dYYXR6j!)3MC*bH$R3d)5ik+aTD2K)$ -c,%A[qKK2Lkp&biABkYql!EAlXF(S13J5&Y*j`DTNI6$`M,$'F+UVML&+"Nk*5[L -ZX$l9Abha0FK`bKr%kMG(DDCQTjlQGSH0M%%2*e2Pp-pJr&%QQ6+&k5,h&ceLrb8 -"Q0!LK"CIMBEM@5aikcaBfB8AT*Lb$e$1RBYc3S'f8f,D0e*YBr1@RM[ILm!Gk9M -eIE-NbdDH[QbP5!cjV6lK"pjZ`BJ6fA-LTiqeZFfL*4Y8J0db80cm68+IU!&D#04 -49j!!hIcmVl@P%)IdJZeaA`C`lmFBQ1jpd8lP[h6J@2eS4jkiZlG,j2qYV+B$0N9 -DhD5h2ePE*6C-'k$23dG0Y25T-3Y,IiQc4IT#LJ0Yj*fIqJA41@5"mZF9*GP"0MJ -#4*%43L)M)(-#H5DGd,d1X`VrC-@UjK6`D1NFq8eZF504[NBc8&FGDA[dS1eS&ZM -$rf-K8P3F9TA!2LU2-SNdZM%DJ%%TGGceUJ"S46I2q(aYFHPriLL9G8AqpGI'cq4 -emHp+D+N"dbEKhE*BS1-dkk$CYN)0acUDrkdSf5bPF1RD[%j6+`lJV"d!T6b6&X- -l2lrS,Fa%0d1XKM-G2Ql`3`9c(hJfV,%me3'MAqFRlM*35kZ%rLlLG0@C)9FjIq* -hE`UV@EVV*G'JVP1T,K$1f60E#(AFQcYK`dLDL85%PF3&k6lZj(mJNff)J+$#EfH -!KC'bqCN#Q%i)&30SZ)kNTN5[5IrJM0I)8*,H!0-I'M&*%J+%$J#3!*pl26[V0q% -Zd)VKEA8"GP(d&PMeh-8+R'EmXY0bNjeQiLHTh,a!SP'&9)JlS6&H+L40MEbPP"p -*8,a-E+hfqq'Mp$[a!X1rTC!!-lb$iljS@RC321%N9P"JMM,SGGRJb%T'e-8bb2b -LAhKNM0K)1QHXPK)4jkS[5,M'42!A"4BJAPFLRDPICeVS'ZPardJq1',JbLCF#%G -QqFp`KK3dB1,c%Tr3L&h$$Rr1UZSfMj9,KI*J9H+"X'Pda'+@`H)ACGSLK$K6XY( -%Yr2@G4b0UmL2FfXJ#4R8-rrf'4STI+5r*JNTQmjSU'Gir+RXJbaT1ZN*mGl@GdX -D(#Ik2'$#CLS2faq6BG@""kfPadf#NEQIN!$R'pP6K[KBDFQffRKm2"d[ZQY8lEq -%f*3")U+,2&PQ3"PhC(M`EZUmei(**rJ5'Cm[ThVk,eA-3YRTR!J*aS$M)4HQ@`0 -5ZhULGeL+-QKSV8#m2kLpNp+QPGIdB+ra+(fd6KhfTV&K6$1Pd*4lp2am1Q!%R+# -GdlZhL`-kqhZjY3&[B#*0V"r6%mCXGN[d"5eV`U9hiS'da'f%()31BfDAHT3BjY( -9"S!FQ#C3KVILRF9fbl[e#5,C*#mIRXDD$XJbhe,r1HYj`C!!B`*h1GL@6'X4#d9 -B'`Qq*f6dT*pGrH8f-2SZ9Q%!NrY!%aRrSP"f6GK44Vq8aRID@U!NI[(#j`VrVlU -E)%BdSF+FUpSfM)i(h-hGcd)K`)SjLKG[l5j,dqRcXI``,k6@[l-(4)&Xa4#r8(K -4l!'+rYB66mrr9Z-A+E9X)A'Bk)r@+-Q8E1J+2R",q$ZpZ'Er8@IHMpGer`CQ`0X -rER@T`d%)Z0-AQE"29p&,RZ$-Jm[I0J$C#8"5`1BX+ZKr#ZAIZ9P,b#[[C4Bf8S! -eX#%"H9e'GrKG"@`IMLP5)kI8fT-c2)I2AeMfpe#R"IJT4Jr0AZPDa6dZ-$e(MHI -#TkPrEI0-Q5N4CAUSI*S3'kkB,e*li'`MZAea4+VZf+((-'36J`rHcDDP+BmU*FX -#2'AUHhq"lhJl9G0e@PcA+'GbG-LD$qRfNjB!rA,r3(EDXES$M1(CAHdT8%F[%M5 -pkAQ(PRX(2)DMd5j"jH2-1`V-eHHC9+R'q%1Bmkca[NZE+0!hkh8r1C*LJS&Fq6# -ZG%M9IBM$mEhdIZ*i#F+693ZCcMaBZ,'-Q+5YErEddYBZYL%5MeIX*QTkrQL%!e$ -R'()QBMkF2el1Lq9#mFaSKZ4FlP1h!FC82,Il`hj9h[pq&XELhSYSRJ(S5[aabrF -cU-JadLera,)Xb%G5qk*Q,Xk1flc6!8S04$$"kei'bUC@3ciRe#c3X89@1Rdkc$d -A[[2q*al3jD0lq$pTF1C3j@H+)h1CHUm4@a`e+f!D(+VVI2!d6&$Pee#&`TJ,plP -'MBVAr2bpQ'RB1(CpSL398%I-YZD5k5&rb$emY1A$8[P#[864+[jT9b(kdQ8)Q0N -qpLXY%AU#`l%l+hliTM1Y*bjr+T2q%L"pcE'ZTB*E#Tp0,c#FAK2jEk)8l[r#a&B -P)H@l8Vf0$BP2C0UD&[hJk23jaqYk$K15E04c*TSYSN42'&C%QY8Y[,TTQ9m4'Fm -'NP&ZiILc0AfMYAb%[aP0FJB(+k#l"8$Ua+BrR,1qTpL1eKH%f8"4pG6hj5Vmk&V -4*54-Gc-8-UKN,KHJ6R#KJQbjD5*1eT'IpZdk0`'5+SLC$fUQc)EH+0CjM+3`SM[ -1[[hG$'V'45HUp4!#qa%PY-+`)6b5YLr3N!#L+'6TQ4&fMZA*U@UKjNe*KDGNRD) -S)&bSk5K()%$b1*0ID9edNp!QdHR-$J5%VNGjU'*5a$h#mSPQa-,G4+C1S&qdl%* -q[3!3(hERhMk'4+jQqPXD8@SRXN,-GKq8@$HLrQDh@$%MiYdDVfZ$d$A!)Y*&&-D -@YPaq"@fcahTV6,5[N!#JE[1Hi&D`h&lA6#fUd1'$Lfie8l6[6STiDVH2lVBFGV4 -GH6qV`*4PF&Y[J-q@8N+'TXX$"E0Ve,#0(pjQQ@N-hXJSjRU0Aj@bNBprJrKGB,X -@q5b)@BZak&&(8XB+CJ6[1AE"qa*8aBfEd`&J%,4@bSXFZ06pSkPp'EMp81Z-eiF -l5G0YpU-KA$RHG&$[3G8I1(DD,4R8)+V#"*ErP,Sh)jmE-YEHbG2kUP@"!1dd&EZ -SSk(c9*rVUEVe50"A@l`cH5F%$900DRSq(3KY"D!%NJ&1-KTeqhh2ICU0"-Ll#CC -jhX1c-H$adTLIrrcSNYTkYN2458Bk2Ph-JmPlL'%A'6Pm)1pjUBTNX`N`E9Z"aN@ -I"$kdU0Q5Ia@53S&34)V5@!E5dR-1A)SlTZfb-+rXI[jS5Y8I6N@jea$Gp4KK45r -rZHNUePKJDZ#[iUrNEVPe%A'HNIj!V&4B"'2L#kS'E$qZQ5FrjGcHFSL+XJPQSjf -'"92'V*H!aC!!Vl&!SB@mU3lHJNimcfc&FIbGMk@Qa4F"94JM`-9HX68P43FGQMZ -G)&41C2q$Gk'B'Yb0ZSL69DBYTmjQ1rNS[V,6*TiMP$cmBG-JQAFqMA(EM`Ai5c, -qVh5YPKiXNmSrZDqre1b#GLmlM8PBNl*i@R`B++9REIVXZ)"e2$3FZZ@J3MZdIjE -XaCQqrB81)NSe&1lhLc4Kj*)G11Ud$`D`VJ-UAC-c(MI,k5"rBr`2"md(K68GVqY -4)9JKr1$&`D"c)-,8+S*4[P5q1jVXQ2M))i8GXrS(0b(driCHYFqG@lf%03QE&TQ -,5,UmYf,ePL1r8#11@(,"9YX$P'6@*$&06i5T!5!8Qf8`0R9Ca)S1ED"Acc$XA%0 -#6Cb(cK9L"eDGpG$5@G*ll2'S0VA+X+d"pbH'Z#-dlc5M-VfRGI'8qqhq+df,q"l -6l$Sl)Ci`kpPM9b4QQZp[Bcj"0[93ZpX4P00+FqURPQ`$JLmNI`!3kM$eX#lfrQD -i$hC$ACJ+(RiK00e`KQR[QC*U"PTCDdYPL#c0VGbTq!('DHF45S64CD6&ZdZ9M29 -4U0K)L1dqA0Y,0Ff8p5ZMeecF#RdTl1MdRCUiAh*kJR9l)hB8dV&9GU(-#CKC%h6 -hQR)SKM)jpE6ach(rj*C[)-6peZUQJ*!!5`Hd")8E8pa6E'[S,l6(,*b!Zp08qmL -5`0kT#`&TmjM%mC[US22fl&I9C"me#lDE2-hR+%*!@!Tl5U5+f)5m4bMJ8ieVce) -3p'reFUh3)MYG'd%R4bEp(Xqh44riZI0a(@)J0Y-iG`+SP"5Fr!"6%DQJ"NQC-SF -4Illr#dAUP,R[V#4!3b8&TeANJ54E`YL80'UGNV*KZB%k[pZ&03aAm1"YN!!+LIH -3!$,DcJFi'J[MlbR1ldd*$"kTK`a&A-,jmJl)240aqF@"jh*0'4-#PZdFq(#pYDf -58N9@I*9@6N`#-%c#aXD+j@1&&lZ-0rq0HNNDDcdY@C`f#iV')6'qbLH4E@`8BZm -CBb%+(,3!9'9ZHjS0H$T$63rUlN-i2TVI@3h2$)C+`6IK-U2-jc-4eV-H,jmVP!d -j(EkM5RSPT@rp9bRX*(46&kI&PdY+GlcB1QHDj69kI$-#&a+UEkG-#dU[,if)$Hb -S18Fi84'Ed2G3$LD[8i&54TcAcbhD`6VDB$E-ZaFm%2aYJ8qAlqb$cD-hYA*8ULX -i@ZJT"aD*66&hL(,lBN*+ZheR0T89U-MJKHqF#hR%j46LXL9%YG-Mq0&Cp)S*j2f -JV8rGAFieSqmHMT2T#UNNJr$*5'4Gb&E1RhHHR[%r9L$G,5'mdd*U*$Tmm4+lMF- -N(T-L"D`Cq3C4NK*HEPIjPL#!jLG1M@LAi+BRBG)RfdPHTkE5P%8e6Y*N+4)HJRc -$)ra3i"+6`*5hXUr++eGFQ$%,bdR!bM96PNZP+@mG9,)cb&V[Qc[0Fd4-NpJcN[9 -[bkld9fY"h$J)+%-AE[a$@$`485PQ6-jIU0c*4&U$62,9(!RCiH9UYaC1TPfZ$fj -5P4TjS1B3pf@6N5Y$EK%ZL(h"J29BQrY!'LlfRZdFC`Mfm5h0-9K9Eih8NU-c4d3 -Pc(XP88[3RfX(&ZR3"8Ki6L1&h9q&#d,Sr"aM6DV9Hli[h6([9hX%4XAdk1"CTP$ -G%9f*XDCK@aXeM2,%RL%3XEfM1`YRHpG-D23H4M2fjB#Q&I&%b)1URVVXLZRjET2 -fMVbi@,B'X*b6U,eYa)*V2*@bVId,+$B05i"N1G"mY#3YSSjKJY@FkG1FjL4HeU' -j5j+Z)p8"GSGQI$1e-#Q21UZ4$eQ`,NkQ909RQN5LPJBq!Y&P-,eJqdfX"dR-"RB -@S`kHrl"Xhf%i9(%TqC!!A'Gkh0P+q4mp9'!Rr"(b#8M*qZ45)-TY6FQY`i#*kBR -(&M*!X3A%,j3#BF6p(S*r$$PC+`fi5q"`jia(GcI+K10SbpR!br"YhR8CmbNYiKL -8qrd%M+$HF$"B$$AMirEEeV+`(@`A12P,cL2K!*p5,T@K4,Z5SeLGdENR$`T08+l -INJ$IX$P@V#q1#KMIf5Y6YET9+GY&D*KDD8S"qAK44-9Kplq,P*J*r*QrGCYTHM3 -LJ,-1YK-FEShBYVKrb6pidMZf+`lGhh8+F9UZZ2LF#2cVq+!NUI(8L"kV%B'kfa* -ZS5A0PJ$Sae)*!VibCk'a5803-mJ@f93KYVUJ&4`PZjKFCY`#rqfT34PA1*8FFBr -I@NUb$E6[jFdiGVfU8Se#*ED,dmiY2p3F21@rT9f9&2jbmf1J*IG0fBZ$Yj!!SC[ -fAAV8J&ccB*`45qLbfKhd)3YaUL*S)'Ycda23X%[[!ra@lm3K5KU9LKTd4K$EBdK -5phkUjRX)hVI1q4IC1L`+fbJ(3I*TUhq%LcZpPUk9Q&#kcVdaC'ZY6'2l6q)B*cE -@dj10GLApNAZBK*VhEXfM2f"kiMGJq&e(16JPJi0Z)KBj43QbC&E&TS8FY0Yd6Jc -VaE,$U!bh'S5B'qbi@6r4R-!qE%fB4Pb-jhEKQ8I2LakjJ#U$L"+lP&m1AUTNe"p -lGN$ePRMr!I2J"BFqJV`PTPk3!&GqeaadY"e"fK"leb0@+UqX)Xh$Yhf83MlI,KP -fcH6Bkf!hc!-)5S'4i90Vi#'(8+8Ih*f%Qme*K)&bSI,TB-FZP@3,QRUXPM)%D3, -HYe*D606J#H"44G+eQ-f&r1q@A"hGY#L-IYX"Y9[+iCZPbbS)bd'UX1KVDHNC[mP -lra*m@IhBIb*LML4k$V'BkN'ZhcA0eGb2j1,i8lX#QqSV@YLS%c+UZQ*jT8089%' -(+pqEed,kI2I##iDVrmVEN!#-HEme&I)lk1aaZ'2ck"SEYFX)k4f&401Tk,kQbJ3 -4D3`$Dmc)+UX[i0FYX"DU,#D5[I-*"TrR'MS+`aj8GHcL4'9TNp+-DH`kJ!H8+kf -,54EQ-d$Tf5"[YRN1d$CrR%X(!mqqj`C9&TlHCq(!MeUlQdGi-(2#bdi2J3e1JY6 -R@HKb0UhY+C!!5iL[%,3Pf)pFQNcmBf!1"22@a(hh'&0jAkKrBiEf(jCpYbH+08P -H*!!H([T18QRia9C*fUJA)A1hU)M%$jqL+`NhBh92NT4A890GrjcF-)c3[V)ZE&4 -CR-!T9rES`ac9D5J-22ILb03mPN#!hHqXVmR!#HTXf["MXCeAe2eVUhBZZm9KeQT -M1G(BdMZpX3[Yqi!`2L)!F)0J1[TL'UKG(K1`A%EqdK&IH-QL&FhLErYKh6KqYQH -XePmQK!KB+&@DY'l4C"HUS"m$jZ"L+GVqQe-,4bI55B5&'G[MU(N!NK"XcQXXpJ9 -c!eV9*0Ac1IRF@8eill)1paqD9,%A$ZAiYj1HF(S5HA3b[SfcZ-13!-GF3AI$)PF -,",S@e2Yl,3%F)'@&bqQbXGVQZH4+L3)&3T!!D%C9c(YD-)X6P!Jm3FKAPLNUdHX -Je4TaPQh,ldp3X*k3!#$!d2Rl1PpcH*8`H,j'8VGi[%-BLC[mBH8dkMpK%jmY5IM --,m14qPMF)+YK,)Tj*5i1(VXA&q-99dpDS1U"bI'dqD4r'k2[%iir'j)a"MIrPb* -5b,6#)Q%E'*Pa$k9A*(JYI1F+[r5q'4@8a,NQQmZ#NNamS["D@fDa0'Nfm9NLJFP -+aeU9lXf)1CECE@E5Vd'Ej!&M$iHY@HI5diVYUh1AjJ@TEIbLTTMirUK-GNC9KP[ -3dJRV!#Sib+pkCCZ`)Nch(JEFaYEc`jc6b4V*iIJF#5-$&+SjHQST'eBJY'imMSX -C"kQXE@-X#Qii49fCGa4k*,$Mra'XTfU"9%F,#hE#(QC1&q3""BNQfMq2(10`bI1 -lrLBdVPJ`F2@"hjV1J&5Rrj'G3)qc0)`pCh(LDS*+iD2li8Y'`RA9p[arabUEZQj -9jjDPD6a@C9$CZ"MU9+Ipq"-6)G(K6U[c3jM*E(PJcpR[9qLLR%P-"0-EGT,0N!$ -(GDlAU1lIlSa#GHjZh%bjbXhl%AMhR'iVD6qrDSS,Tb#XK`I234k[`kXha&GIR,8 -A*pJH)S9LZ5h@#ehB1,$"pQII6`,RYa@9k[)B3#aVA&dTdmZTVrB-ELkPkYIG*Xc -d'lJ8B$eErXlQd%[L,hdP$ChYaK6JCr)2jqaFm,8hXXmU8)MVfqmVGc2%*qIK-Q9 -,`p@1[&cAEJBdj93e3GHYC+ZKD26Jbe6--2"i-#DH40QZJcmDJ58K`cC3fIMIH[M -qpZVMjBpqC`)jqAM4S#lSjIUEDX"(bk0,4N+1G48DEFBYRDBRkb6jl96N-F@md@1 -EFm,Nl-+[@k3ZV'Qe1KE&))B)"ac%l1"C191X2P)-a$T4Ui%[ZEikr5#SN9d$h0M -b+5jM,+(%DUNiBI'q,H-jBGM3Qd8"FF`%+*U!EF0b3M4''3heH,1)K%!GSrD6m[1 -GU-#c%"d-DD8C6$e5)04Z$*R#P9mAHb8"kAmqCkX!2$G2b!h-0`kHj9M)pLfG%p# -e@eQ`YGT6prflek#Mj9UT#q30N!"N!(qq%f$BM,p-`*5VHC0I`LSpKU'IUmEN30$ -ZRiVr@m9)+kdb#'AAjY%+#,06#PqfKiRIQ9Ycc#ijR+21j'GlhMZ"cX'E%5c$[HQ -k0,ca3RPCPDHULH@(VPH`jFR$+NCJQbYV`YB3b(2QM5D&j#VXia&Fe8Yhi*Eh'Z* -mr")0A30*)dTQi-cF$%cpD,DSUAk@cVVF5elm@l+ZFp8'iHBa9-(820UpC*lGTF0 -M6eP[M2A'R`&QIYJ4LS@B,@+eR+aY)`8T8RUFYbRmjV`5eGaT+52#(Dd"kfXJMkk -1j4fTlGe['CXeGUPfATf@$1jB'j)XE)D@!TMdBTB9YcjQAZK-E@-6T@HK,,-&Y*! -!)Me5d@lb5Z12hr!cBXSjRK16*fE)M82#Z%@H2IVDQ2F(Bi&QmR!DPX94(Vc4L1q -D4J)&@!aT62dT*@(KJ&#aEM'G$EV3ed#+C"UT2T0CrK#MA93,M[Q5d4lm0DdFP$S -bfCQe3[mZXBI0iCMfl6&fPeARH5QNC$FX2#KY#,)T#'(NNQF3V0IKbJIYVeY&Vr* -FH99cP+'PM,(++ahG*M)b(8mDdM,38&)c9rHXVM(%i8I`Lb`Z$Xc4NiCUT"6YQ-+ -l`!baYRYiMpr5H3hlC!h2MA,808Y%RI@cT(DjLZq6rZH0'!RCVBj!BI56qEK"+Y4 -jpaE!#9*5A8p13c!"5eMf,G)&8hRb)Me4A0a6mFeV0,iF""[bFS!-[[5cB6QX5em -dBZ`im[4LLF2P$#Ge)6(mNU(Q'D)d%3@2MQbb"mdLc54)8H9LmIL[r0TYM1B'M"V -6KmZQdlU8p(m[R,JZIN"*[r$6'$hFV!YZdb$AI$ckCAkcKZXEYc'ZS8[)U10jJM[ -l-IF0HJA#5U,Yfa)M8ZZZDY9i8F%$2JNTcYZE"id6J%!fiV2!Nfk[9!Z(K%CE5bB -Fi`c9FMDi(%$2f6M`Z*NDFa[dCj!!GA[*RT8`lbrNIUjP$!f!ffSY1mFHSShBaV% -YTk&RlbKaQC81Z)e4-mB3VH8c*"Yh)icPfT1lQ`Am6U5DPPD)P'6m@lfDHmI5XmS -)1)Udp1McS#e!J$-CaTM&h4p+RS(H(9,[JmmZR2$a1@3dhr4M0`KeFdP[,RcY*(- -(!Y#9l&)I0f9'mPprNpB(0N)"BEGbJeeN"JJPCD("hfKkM!,3"la'$XlMe(m-4+) -UMa5!NpRk`l3EqEH'kV-Y(Y[#beqmhqR5Lb1N6$jN2BFI3Y!'EQ4EN9")!r3+rBP -*V5j6Q0H0USJff3CK!Npm!-3G`Cab!h(X"G@C+J1XpSi"ibN5r*c4V#hR&`X"PiA -ST#P+@TDJmYa@qX&jIM8'5fY)&Fe"ik[SerQZ'9*H&%$YJ$8V,fk&EkIcIM1+jA! -HM'S$DHZ'5MS'aE`ddk#a&9@M!`YKdMJ)&5pDNPhVIV#KeB5i-ePSpI&ReKRBcP( -03R!i4@JKP&F%`H"lFA30GCm`ir,0MmJY@j!!*+"m10h#F'Jl#X'GNS,"9!H$31N -IQC*j6'i8+9E[`)KYkfTM#S4j@db0,STeQ&C'*-9d'l*&&SK,bM)d2f42fjJk2)G -rq(5$C+S,)Hf)XC4c4c)erhPF1LBeI%HmmHARca8'%1kJ8b"mBQd"&p'@cN#`RjF -mf(chYST8RJ5#@ecL5'b3!06GJeAPha8mZ,RkAKifeMfPVX1)3RIr!%%)5hJ-ZPE -m+Kh4%0$aE@4I-iFij80hG3`!Q[P0[9@M9h)XF1-[FCT2V6+S3K4D"+8V"!NP`ip -hpK+mrRG9c'iLG!ATV1%FrLNDMp#3!1)ia1h!FGQSTP58%GDLGGN9Z*!!%TJ&TXA -a&M&&2#l(E("8hKUdE&1AX'PBNlGZP`SIP4UUdmd!3c)[P$+GI3JJHF%kPb)T$dc -DfN"1S9RP0il(I@kq#FB"`fZ1PPpPai1VC6d+P(K1ZHJ4aiAfE[)N3(c4U1fR)Fm -LdT2h8c3M2!A8-lb[@H%9lbj!Qb"l+(a*HiR@EN5dUi,*Y&fX#*0P9`%dmU25X8' -"6"CiI")3G+'ZqqKS`@21QjmF9qUF6(F*3h%l*'NCTXMZN!"+5A[c9-FBcXd+CqP -pB3,6[CPl@hIU`eU[q($k%k5jbkCLhId5-b*ed9Ra*(@J[(J)AbHKrV5e@kmJ!i+ -Nk!(,jq5C&FkGbCbh3)*#fU3C4I%R['LcAp-bJM5D6-GNNjcHq3`I2IJqMCPZ,L4 -A$dM3TH*EE-D8!Q`2QU(EU9-maHED&1j1kJcMCJHaV)1FXq#'UD2&IK%$kTRN(UP -)b(,,+`kdS9F[J55H"%AT`K$2*Xc[CEac4LfrJBEQ[Q!V299biTkD+%lf-K%C%1( -5Nk@i%@CT9D#S#VC2Q(CpIprd5SD2ZrNC1aIC3)5N`1Q6B1PemM9bKhGEDX&3,83 -e*bEhM*TR(JHp`YHaBI,Y0Emq+#k8HD!m!(MlND24Y1UZ19Zd8k2CcZhA8b("9&q -p@SJG9"d!35$eUZQ2q&@c3P['4GdRFLVB$1HFU&5lpDi%c8GF3'N0CCRc&5ZJB&R -*MYj614ceV2DCIM52!kda1JhHUVYcXRQAX$q3!'k+l&I6d0ARl6hiU%6RhkiCXUj -RZ)Le,G2Z1BeC$He8!G&G-Ip+UdQK(JBLcZj''6(JG,iQGBEp)@XpPFf*G-q'"ID -iC%V4(-m`60+6dVZHp+%0Gr&cSdEX0*+'MYVd-RVNCS5%%q#Br*1L2'FDj49UH%k -@,EQ6KD#Nfmf6Mc8ZTU,D%EGeU(iAX`0XJ%SfC[88l%82Pm["'j98KrbFIBS"A!) -kHH!*PXGaq!4mBNG8MaJ!`ZqK+P&cd@+Q8!NYL(E'Fh"QMc&Q6%k551d`I#mFBX& -%rAHKE$XKld0h,QBSd4ZlT9jU[Y9,fF#rk&S"60k1G(ThN!$NJ9DL`r%QTc'+G4R -03jG`$dZ0qQ$DHAG`-aKBm&DMSCR6jj)N"5,eFLXUHMEGYiAKKM9XIfpX*(hHP3M -YEIQjGkZJ"r'3!)Y)4[FSV0j4d4*CcHL+6#[f2CKhKQr'B1TrD-FL'Da-EK*,Z6N -!3A5+X"BB#SN`'*VVD$)ZT)"98HKpJScLlL4Jd"cS5S`,d4#P#j6"*$[hk$4'cdc -VlZFZi)Md!1$YqGBq)C!!HQAiTj6ek@mK*iqrEbA1[ZJT[MH,I$cB@ALQ!6$6[(F -(d(fjZ1)@+MRRqIUPX"Zl6q"F&j'$VbI*5a&#HLe9E'rG3cZ6lB8QkI8Fd$eH9mR -,eKAKh'h@`%e`RX(EU@kda0N2$BNb[cZ22BhX3b&Z'!4,a+paLr9*53b4`%lMcL0 -E#29UAQX!qFMG+DZjV0!)#0TF[[kf9CS3pU'9ii,l,0K2%6+QL+4AK0[Qh*1ed@I -jYRNLQ,jP(ih)V(5CJKIkkG%KXLiP5DE)h9`Qj1BT"Aq8fH5pGc1j,h94mD4'eR1 -22R+(!M"*H$VFJ'(rL4a1@J`0r'rDDAe%(9(BV-#Qm42bBAD1fTBDAqhT0RK(3U+ -*cm,KR0Nm@GE+,5TeQ@TISiBqQ,8lD`MT-&Ah693FMc*[paE23m08(JMiKl65'Y8 -be%bGH6"F2q,8RJR*M"@,l,G1m-JhV@JIi9'BeYV3I%+-NL6V5,$c[k69jX#%iY! -1A'[(UkPAA6qUTN@3!-f!mrGrX,kZ!!mN!0ZLlk4D-0E,h4IPh@6#*[+C2@84El- -FKcUVJfKT*)bhiJ%q!C1X6@ZiEZA1ceFJ%-P&`GF)Q2$R3mGiGIaEX)1BAMd9Vi` -HHhUFV96$i!RU&$D#-R5d*GKj0f636$CmN!#ek&5EJD,2iiHCMVCA8I!N+lH(T#r -"aZ+Z01d@M-X&rfR$1Se"X06!Q&,HUDCC[$D'[&pF$%I-*IMqaZa)cKhbI`NZh9@ --!8L@mISRfE8Qa(,8H%"m,C(H9S0pEEK)U'GPb-DKLV[(P$'dT5*SBTP1%DfJe+( -T61RAYS@D`D5!qB(EjIVJM,dPJdi8c#c$El9ier0l)JrIQU&RqkP%`h*PXcfLYhA -f'PU*EpR%1c'GSKS02[b"5LGK`#%X0%!j(fd`h8X&3r*&lYj"DePQL(BqJqF9'Zl -ThMd4TFm$MRIU!YAB*%E@6D@XPpr2(,e%jH@CmNK24BjdfH$RAMc9,TiR@jQJ[', -8mkZ"Rd,8jU3"XfCaaAkGQBAZ++'ARiRDMiIQA`lBSm!idJY3[hlk"1!k0QPV85( -md5+r3$Te91)jQ'*fB%AGV4A2IY0l'5X)F@pM`EK+I+A8'CXYTl-3epUVC@#Fa*T -FZbDi'q)NK4T4KdRENRC6S6mX'QDKYJQ1E)cCR28Qc'TDKU*,C,G8b#,V@MYr9e[ -[E-4b*d2P'NYE1l0JlGq(B(VI!MN`P))9,'6%V3hhA)NbXB5%Q+5+GChKj`d&I3E -Um#rkjKFR1$8E*M4@V0kB#h+$SC+pM`C40LK@LT15&%@'&6G#4kQQlFLhNGR3fXP -G51)qcmA4D2JG5mr8"K4[i!@!b#%0(CPSJZ3I"fH$J6BRF@qZ*%#d)MHQjcL0p,( -9QU[pRpSiSL$)T82INNEH$!@dCPLi'jIN&04piALdGQ&*CGP@3V3c)eKqE,E-AR1 -,YkAZ`fLBA0Nd1"!YlViDZlYfN9B[cYCcE%LYTc5QPBF%[k'EVEZM',,8-A52&#D -c8-AiJLaX2hc6(ME$NpJeTUfBJ5kDqQX-Ep+'N3F9S-3mJ04DNF-l#LYa5,"lUr) -J#3`jX(lmI#p#jUhblMQVB(,'YTFU(damm2Fl-AAQa&+%20qJ3RilqPdi*q1NmEB -j`88#)$bAY`Xrhh8VN3NjQ0USCH)lIfDL`k4ZXUMj"-'fPVRl`DZ2bDU'cC,)TF9 -YIBf((8Elf6B12E)25rdCHZ!hdm#!j@mZ6G9dE)%hDjk)5`Z4k1UCrBM-N!$[R'm -ABcUlrqF33+BS6cjV")qH@rFk&r@3!""prIK9)jJ0`&))GR8+S-qpTbm1AR+h'XY -+J!R[JI$cc-aLl#!Y2HM0j!c9jdRCm80Z$Ic4BG[2!)@)fBheIb3pFr8%e$'D-D` -qXMB-P**jZ'`b&'&(31NlClcjf[K4+H'5mNek'PbSd#kJAhZ!`-HG81q4C*4*ML# -M)eqQD@!E1&rj@%N638il2#qN&d"Vrp-fJ!6PPj(A*cD4D8[M*0)r@8i3(&+FC$Z -fT'A$%(U'UY'CUFd2pIC"Gh6+3jPdrqhMfibBeG$pU%UH!apeeij&YPac%6Klq2L -Dh$'Fj1TD1Ci+S%CJ1ZIbKm-Xk[fm8"MBp9CfEb6)mjk!qVBRN!$)r8-L5"jQbiP -1bX@$#CkME&@k'IVbbIH1L%`@IY8%K4HN6MrRk&jL8+K6a`[Fqbb,M-"+Naf5*bc -hGqYR)%[b"!8S&rFCN8hF@P,i5*N&jM(mlH,mN!"BclEp`id"8CLZ@TdAYMN+$3, -!4-N&AHJp@f9S!`qBXHf(qep+Lk8Yr-RTqa"`rD&m@[Fp$3FQP*N+UjF%10M9%6e -Y`(XHdPiIEB#$d0ijEFRqNLmjM0qVr6M['RK1"jCI+"@3!1bS,#cSU*S)T1Im$Vd -&4iRpdIaXB1(hkdHSrSl"hDlZb%2U1G0G`@PKVD`ZcMGLM#ENmQ44Mh"[P!GSE(! -(E`2dZY2MNmCa!PVVNC)!mffb(l@qEC[k(FTN+09JYF&-aabR(KFSD08Gm,*i0)- -Y5eiVl+64QASK0hi)'EL)'!6V+T[9S[RTXYG!NFF#X#q"!a'25@m"rm[k6A1K#%p -"U*D'@H,4UqS2`pIM5J2K(CXULbXeZA4ZI'5&3eETGL#"--FXf3SI4GrEVpdNEhR -,hGbaPC3M*ZSH[kFm$T+5%,P'QqANbD[-9fFHl@Ff[dL-j1K#K!ZR%2DBdG,2pe* -HBrejZZSf1i-R*L'j1"6TJe#ahRD3!0J@H`"48mVXDdN"@E91FIqTq4h`JXe[@H6 -[DQ&5"9D+bAVj$6UCSkrVCbj6h,G8LmM+`LjF8pX1-#BYd%GLa+B(cKlq"NITmlp -)`TP1bJP%`*XTaIHe0laF0R!XCl54*Tec`TGhXfCT%SV4JL)9Z68#R!QEb8$!T"' -,`Br($%mAXfrI06dED(D[3U&I-(P[G2hj#2qicURXbUSUrLir+e1pPLUq*85TP(B -QH4LXm-,[Phm2FmFrLrfhS(j8HS(JHR9*8*S,!-Y(&&f3!0pc)k32,9i1)bSbr26 -Kq6!14FBXP,adIDREa,F8fQ$2)'ab'`X2D4"8-X*R58LKHYM4fb-PT8V"e,lIQeE -V3N[J$i-!@Tk8*Li!GR4aGiAAL1L3!&9Ac-H&BA$08`CPFk,3AqX*U+[%SN2'TXU -)"i*#qk@mdfMB)04,(m3!rIYTK[r32IpH65R05lPE$U)Ej8-JVD-d82EQmMd5p!* -hTZ'[c3j4+BN9!,2FlcpGlV6L5SRd[kNlPS[6hNe-,iIkIJFp$8FjkbG@Q,'BB%K -1'f'!"Q(!'ldK'rdVA2hX4ej0VEjkm6VCm[aPT+JQb4I%rMjj$#L*MZjfTY+#l(4 --m-)U2l'CZk&N"U5dLTF3"me0-AiRRPd'!K"&NRBL-KBJ%NmTYLT['&bZ!`@krUT -$eN*JNlP)*hLX9,ZQ#Y*%NUE'jH5I!LV!I+qZd-1l'3[8c*`#b8pm9Z0*,Q+LTmD --!cClEi9d6d0i,M$-,UF'Kq+P-X1K!LB8QIPYliS63'30+1+R5*I9"@E&qq)Y5%p -Y$EI&JXA*qHHfq`#TL$#-N!#KT2kB%L$rC+iGS#I(SK(19rk"-"1XF`8IbN&R5aH -4eLVHl9kQ29)'cZP[3M2[$&@J#jqj18m&"8"r2,JRlRE)pKM%EV(I*6A5JMMfk-L -KVNRD!`"Pp)8CR8b1TJUZP8L[-ESe8!qD`95(E&&YM&irY8@aMMV1'0#"ea6JI#c -VK)3#G'"&fke[)[#K@%P)`U8*DE+QE5@Dm`b2Imfp*Nl12ZYk"(alE%!$af+k63l -e1Nhe*Ti@j+I)CV35aLe-hHFm8,if0[V1&9BU(DY'MS,"EA4VD+i$'U!-I[%SPI9 -)4%!@(h+9$bpKU-JjDCkdU%AMV4(X%U),#6DDP"HQF**$@kC(NU(qlM"!%6RF+V6 -QV6U-9'+T',b,e0SEYUSARFAPJYee#%INYT1d)K0$#@keUQ6P)Pe@`9[P-(eR8q* -P$Xca2,EAIm8`F*Y34G08+hSc-"-)dMQjVY8db`HPU+YXGGXXSSA+8IkkMS(XqKY -A2ZpPj63TN!!P15C%1VHf+5(5k9U+FM@qp$"@SmT5,aal0ZG$4PAc2V-(4i2r96Y -MfLi5KmchG$"!$UVQZ%XqCfTd#&r&Hp5qmIm+GZZTKH5*4CaH`kMr3`k192DN8Tc -V8X5Nq,3+[iE,UGRb65&RBHBUQ9ee`bUP-TNL'LHQ[`XqKr-D5-FFU0lZG`D%rY& -pKqF%dA#F,9"!Ib%#MkE5fD+2TmHiHNk82DrR$Rp6DaJa5hMZeV-RIZDVfYL$Zc0 -3LZ&%[lEcm(hpR4f$JK`mRQT'()r(Ia2Y'*kVDLYYL&!V4cjM!'R#VheCTY9"4ND -@G&[68XFR4DXfB&10jPQ0Q1aCCZ"YY+eKHrS$1V"IK@!'(#!Uf(cDCb5d@N%m@8a -2P(INd'F2`jVmDK($Xk&AiUNQqUB@G@X5R5qlMhp$d4UC8#APDNeiTiPcE)r6&`5 -[,kp(%+@0dX$-XBkLqihS'%@,pX(&IFY9DKFIQ1"JECeeYpXr*hN,cRQR9(C*5+" -Li'pr5$AcG@05l!U+)AI+RYQ4rpIjce9j3"M2K#DND`c!M'@N"VKbl#5c"q#*mmS -9&h&Q!5bU200'@[A))[!k-+T&Y9EqM2)kPrEHHY9LmF#QabC"0r4V0h#F(P-+ppQ -bSBQN%bcb6YcP#SVT4dN42)`Epajb#Sj-N8#&BM",'bD-2p%%*2Rb#"5#qDY'%)d -VIdQZLbTU["[b$0V$EHklpHq,r`-hai[fJFEBl&qm``dhM+HMLk"T'8lTcX#l(Q+ -j&6S8Jc(9JqlHTeBE[#8D5hAP4qMmT2,if,Sm9[hA6+cm#h86J3`FVM0B4%0IM5` -5ErrG($S`0qrf!4`rcG8kR!i'm!l*l5,$&#BSKIN1EJmDm3A%+#,d1'1$FJAfN!" -Al"VF)hllr#eP-Y&YeEKC1%ZmRU`B*Vj'+JKDZEKC*e8L*6MT#)ci60S-Bh2!LXi -M*"05U!eeCh#caaPbLeD+(q03+43!TriHfQ`drGQ')fph,(AfePIA&T-k!e'+Y@- -FULM&MqS3FdE(k0Nr!d$6K5Pqd&1'j4AB(#pa(-X,[)UY#KhJjBXqXBrhp$X2UD* -bMVA5Ch[(3f6ZR#K4pSi*V$hV[kE&maLDD'4hd8A@djkejXDja"mBiDp5f!)+`hF -IpX,d2lem36q3!-Cb"pJH"*S%c(5IDaS8KPcCkZM&`&kQ[)3F%)pC@TqT6PLlFpC -[(8HK&3LCk)'M,RqY3Mh@IULVPLK'qUdHDr"F1Z4QYiq-'1b"Eh&Z[&fEr6)X[#a -`ASDble8d)ZQZ+lcfqPp0KZUpAb+&SbXQN[4+68[Xk8)[A24Phf+"@bi("JBh0q$ -id[Ypq@aEdcl[I'j1kmbp8Q!K'Z"E[*Apl3lmRQRSY!Jp,dTE$NCP`j55I)4e3H0 -H3[SBKmU9`+me+5r8Rq+,r*3p*RE'[86cQ!N4ThrRC8L54"hl!Sk13q@"22@A0qP -jPNMdL3J,2GTB0dVeZN*D10dESZ%bYjQXDmd`L1"pCH@N2!)*bAfF@M3(3TpB"j6 -ZRm,pNi-lp`'%40Mi9LYJG3#BdkD)[eIf*+&8N[HrqRD5!X)e`N0IMK+dBmh-fH, -@eVH4V3!X8B[B`d@pSP6kZI@XU'jDTDXS4+a`M'a3A9-J,3bIM9@IeIU90C[RH%[ -QY3ZV%Jk3!0N(2bd-*GJqf4Z--d-QV`1L%IB*'3&Sf%XT5MA%!8l'dLP$#$&C+P3 -C@m3CMM$IUMZ3!&E-#b5qB(BeZ,#iYH,+h12jmeAUc+U9$3d6*P"@h3G&4d$d*#d -crqXki*INAC[dCpQ*!-MY)FPS)D4`J3EaUC!!LcXV88FB!Va"TD!XE)U0$*JbSCS -ic'e@AS(SaU#YPHTVid(%EX05i#cEX!C),HXQj+T(k-``X+j#eB8A+!32eCB0)3+ -rGE(DC[mJ-hMe)YT3+DSId+p'J5+'38!2,AiPl4Ckp%$%ljEE85k9kLmHmje)0Mi -bYRTA)$h1[4Q1*,lmDIih)f2&Gd9m98C$8fU-H+-k#46l[Q"EFYb3!&MCZqQ3!1p -AD2F%P*%(p2X[IVd'HXBZK0b`RH$FaTGHkmH*8R20M$GbBjP#mBrXP1q&('D0EQ- -CifGJj*Tp9IFi'c3AVYS-k-PR%fFk"#AT'l%q30@e%GUpFfq-RbR5l&Sfe%JFa$P -*ESCHjiU0l3Yrb"M3R%&LH#XQT1PfqHCFRDB[*96d$IHf9'V%I!Z6Lk83(8)C"!B -U5(C8f1M4hV*4IpmU0qG[`A,2X3H+Id[SGjF*fKpZf'ii)+U!"-TPVI"SQCcfdb[ -hDa65CePbY+pl$b61XZ"$[+hb[e""48(Nk9i'5j*SK)@H!"l$AMr"L*PfV)q"APl -TjMPMl(l`Qfk&jGa6Df0SjVXI@Hrb[KY0PlUC)*EiSVf*abG3bJ2RUY(h$c8[mb6 -RicbL1L8+E[Tp,4h*4e5PHHblN3beE`&GV+5b5i#q"PJ,fTF%[*SbRAVp*6l$Hm2 -jh1N1A*&*I"[a(FH0I#Ra9!J&c2CmY)dXE2dS9J9j)j6!CAN6+U-4$LCA-JbLNae -XqFBTfjbhkN`#E8G*6EFrXh1mIF!VZHETrHCYq(Sk64lq5LcbVff6hJc&e+j4I4p -&FHcpmRl&pFP810dmRqP`5bDJNlEXcijBKVi#Tcbk91!S`fp&)!fm9$QBieGZIIB -M3P,qJA'BU@TK*6JL[A*K!khDl6-)KC0FMl4S!q(eh463-RbVabXFBPGPND!2HP` -INiUJepb1ieZZqiSiI@Yj,HV&J64C$FNa*0d`mLmfa34T!&!Gl2#"jJ$h04`-MAD -1V``jfb0LKbc-MG``eYQP%pc`[4bS,&I9ji+r,BZA*RjM3L-qf$"$cc(VNcc3%!R -Fm[P4aq"IL0bSp#S95kMN"k,T*+mch$QX-R$em2[L#H*CT#@IAIJQ&DKk592D$hJ -@kbLPk@6DZGA!iDX-UD(H0#TF!AUfefj#I%b+a0C5JT+!kkNGKrT-MVm'2X("I(r -",k*0b8+9(N9KbGc+dcLr+,9RY,pVlapGJ%eMhr"250k-$$K'`fXDf0fc'M3DQ8K -![XPCrJ+"a%2'ASSiYbdGYYa&Q'e`9X64S-S*4[Kh)hCR[)(*+Y4$pfZ5@l($Yp3 -Ii!#2RTdHC4FZYH'*EXAm,CBa*1ilSpqcR*(VjUAq0EPlp&'k)dBl%V-ITlPKB&a -pCPJdGG"ca&[bM[[A$c,$m,UV586`1#d-"N'N4[B!QR#62LLfQ6"IYd#%q'"bRB$ -6i@@j)Hc,CVK6A8'rY)L3!-8F3-GU@S10RS5Pm[6RKdam@eP#*4r8e'$AV'bUG+M -mMb-h4N3GKrKqEX-#A)jXQ0`+8UF0K,1U[aYpN3b'mV`J63)FD#p8eC-j1dIi+b9 -QELBUq4Cj0)XNCVA95%$k4#!9(k@3!*3MC"6dL(3["QaUh(#CTRf'JD@$!FR1lGL -bTCP8U$Yj[9[m*45JHBLQU[qaIjGKXZ"1l,$[fDK8GfjE3S53!,JrKT!!akB#R") -Z#K@2K4i'F*khTDK4%U#rq#-d--9Z)0RQM#Sb@0k`,jmm#$2'N!!#12lQ&*[8j(D -UJ*!!j,!fA6Q8QcXB3*0q`1cSbJrDb5kSHUEkZ(XMCre$`&SJ+pSc"kD))ebh9AV -,m3HZEhRckA$U-'RA`Cp*!+@3"!%!!%)!%,JMh!#i)p`!N!-GTJ!!VN3!N!21!", -lr`!1KAJ!!$MA!*!%$`"8DdaTBR*KFQPPFbl2J#jiE@`!!(2"9%9B9%0A588"!2q -3"!#3#S!!N!G#`G5R4VU2PNbdGRr!9SpN'Tf9[3#R#mE&4hqr'A68ha66EEc@HiG -&6c#I*pYd6E!Sj5NK'9p46VGp,#QXj@9bqL6i4I9JP"%T8j38PkXq,880T6-6K9c -!+2pb&C@iN!!dr$`+lEAd1H3TfU,bE)!lRd#"PP34ba'&C,V1SZ'XCZhV'hcJ3cI -eEj5(`CaTGq%!cj*DA1j&#N"+Xd+0(EF1N!$E5dR#kjG)5Dq#kAUGc''@XV%'li6 -@q(im8C(NCfZA'R%b"P8Y9'Ca$Qa0bG,S)3bCMp(MADh5PlJ&mC@9-HE09URD,!- -YI0'**9'1d2UhmP8hFjSN[LLAV"qA[ii%Vr(0rk2Ff8c"ZM-)l6jiMj[-#'$XFN' -iNb`0pQ0a(DUCL+3f3dHBR-ZHAT!!UcChBZ"*eUZQBq"C*%KYQH59@pm+mEappAh -G'GcVDrSl+QSZHC8E'DhX'mm32@flV&aj,`IFPBb`(S@5[#`IErV%"93d,S`XiD2 -8UJ+pGjcV"4Q6+bU4``HX`-+j8kL$)lPM)ZZSmUI&B&GFfl5TUm`H$Dq10FVNCbi -JRTS9Q&mh,e3,*$jHd"c%'%XY)+*iXJ6)9DPaF0bFSUHDpXYcq*C1)HQ,qd`@p'2 -SGmU2S[lPSA#H'ca6V*6D@1l&m#!0$3QX61%[1!Am8+5bkKHH$k&Qf9#+MSFKm[V -)k)F$4j8XpKJmq@kIDHE,6Y-B(earY@+Z2%2SHV)[bR$T$T!!F-pRbJ4D6XrKVGQ -m(e(jef+chbdMQ'`lU3Ab#rBk)0ILADM2E+`A5Rb@D#mSfZX)306[01D'rc54VTJ -Q@el(rZ9)N!!Zb2ZfN9LAUSQCI&YPIE&EGAN3GRGr&9!XL,AGBTHe-ZQa,TeDXJa -'@RLa*j3IY+aH*`$L'hc8LcX!&#"cTfK2$0PVpq9#D8fYZV9CN!!Qp[i*E*i5(-b -+QR6Q@hBbXX#2G6N8rm0%5**M6*('eBl"D8&4,R8Sal6mVbdRKMNM2GrK3jNkMRX -c6AHJ![#P5("U9Yf1-(d34QA%l)Za2L%P'KUCUpU+[lC)p'(BAU95qZAfR9#B(XH -U0h5XNN9r"PBT`1ZiRr1!FLT"93B%SKjS,*@Scl,34B(B9NEiM*@3!2cEC488HfI -0f1aeJVUjBqRb"A*K`Qbrk*4d@r&bQKI%,V"%IVB5%+'"9id5k6J@1R*"%cJH$Qa -"JF4V%p1kSr'FV(KS58L4!2GFHHdU8!2FVB`e$IY(Bp&"j!l8J,qNkNNEhV,p+cP -+F$p3YA,`,-Ma0ZJ(f#lGTUAbr6eQj#%9$965r@Y$*E'&G*0cA-XP"U(F-GeaY4R -B,eUNQ3m'a6ZS88EbZ+'$8&"i-`EeZdl!m[Jk`UEX0mERqHX3Lk1hYEkf598HpJ) -B@RjYD0qad12NkbZGdD98c6#DCAK5iK4XqiTdjfkL[P@YV!CUH*68[c(9J@GE@[R -*@am#5D5`b##kRDhJ#ElmI0ReeM5M54BSrS"QcpUl+rZm4rrX9Zhf#`mhD-Q3!)X -%6jrdliTJKrp&RU!Fc#'iJE%Qj0qCYhd1FKY)L+C'8V1Z+"fm+C@+pH8UNPFX"B( -X$CB2ZC3fLfZLZ1Vmc+A-mbeJZL91-0Q("VAZk5Lfj$brrQ%I5[+ark@NU+5D5RM -F0P+F%8R%BMaM9+'c6b%Pri(QmXGBQLD%-K,'2+-r3%FPI9KZj-`FP"L9PQK(pS6 -'5CY(5[el$8U54T(-CY+Uc8A0FM@#rE)FK@B"-$pK(8#IVjpmM6[4Mmc')$,b+fm -JH'B1HpX&6,qQS3fb%IEYqJE2FJD*SV[FVPJ!9C&"2j(f+r$MC+B![6L6`r%0RAe -0N!$dl)Nd0j0J,CmQVAFlA`0(&08J3bB6U9`KQ''DS%E`h*al[m"ecNj,j0DUTja -(52&,)bBFjZYP'k@GD0k,GNX&$Iaq9lhY06Z-`T2p-$YmNrFfpDk%0*GQZcGN(fT -Ci21-mfkaJck61fGjfQjVl@h[M(YJmTJ4HhkEEf8U#SX'daRGQd@J-8ifh"G`YjV -D9rjd0GQZab$PJm8HjYU)a4fD*,h)CCrBiYMG5!+'YKfKq"Pq'Q5Yi03Zm4f,j,j -jEbHQV@5SDTVSl*qbe&m!9!e@"0K2I@bq,8SM1$E'hf"8260dU6Ydmrh['X*3UPL -,&&,SHQ4mN40J%DB6V4kALlkRU63@%MMPE`ND8raZ*Xhj`X[`Xd@bU69qPfSe66P -51N+D6Ij61P"T)AG)K-G+PSChZm@#9iXJ39PhGiRI8"h6C@R40BrRCVCHk1MfJ#' -R+3cZQMHj'*epd8lSS2##8Fl68&H"('Xr0%[SC+Gp1cdf[aNS[Sd('U#FNfL'CJG -L&Y+IprGiG$6VjMUU@Z)!cffJXqq(fpR+eC!!)PBSYm%d%piQd@0pfF8*!B[Fdmm -AL!68@9e,)2TNY6)TfNYA82%T4e"rU26MdFI60+@-ieke3rCm#aj05j0!d6CR56h -FB5*L"XrkYMaY$[5H8kK4IEib`pLc)Heh$VcIKK`rH-FZ1`F-0CSU)NV8MkUQ'e" -K[qe#mVX`ijT'e40-eDI4-CelX!Z$(CPXE$JUKP*D$+-0F"PM30%'mZ)'8mL!)9R -,j+UQ[DMS,-8IbAL9M%Aq%i!Zaep'XCkN[8p#m+XDcAml-+IZ)bp4B2"[c"9B2PH -G"i2"UbBrU[RIES2J+T-mk2l1Z,ap9XrK!UQG3KM#CjH9Si%'0lEp@ClPNXQHf8& -jZ)$59%Bc3Z`)DT!!b3(iLpq*c0&jBQrPTVUm3*J'ekY#klXEhaQ)blb!&SY6LfV -9ZUG"(5a2%jNebiZ!KDeISGE)U9K(jD&`EpMbB[UDH8HYk2bPiqrAQ41Ub0a%KDD -1hGQCH@X&6&T64GYNpD'`I)4iAQmNI0V2'A#6iDN9"GDMG5SflUY9k0V1N!$cmpk -[@AGPjF6Rd#5,4pH[J-F)JPT0rclA**Y[iNh4"4"H'5)X3!38iX$5VZT0SDkh%hA --UN8#RbBV&b-)FpFUiEb4-jJN([+5IDA)3RUCTUCMIHJFh6TAV[cJ!NT9[@k!3KZ -8h-keEieKK@)EUlGIIF+PCUGV&q#""L`[mESEELl'[UYe"c"dUH-lhk45M2%j+h1 -3!$pbJ89bl&$pRGZ#&%a4p4iefP*c3#&IfbU4bAp9MVUc#,28P&`Gb)5&(pE8%Qj -*rmp[+MrJN!!8pdRDFTTRji61V#ak2B936MXc*EMUPl%(!r6H,T)6piAJTPR4QQ$ -*!cMT)&')%EM$l*l"U8[XmSEfd0bN)0rBdlJ5L`(lee[)2ic3A-X9Q,E)@c0*+(f -r$G4MX30f1E2IA)J[3EE!hQ3$8Pe20%$SG$HJ1SpPrFEc#RPCfpadiJmUUE%JfpG -$fZ@*KiT1pRB2Dr)I3SpU("9)QE3[DZ!$8,UV1M,X!(pT#aJm+I2UlN"%l6VXXHG -N2akk8+92%@2T`HC6BJm8&m4`$b5aLK#6PB`$4Ldeq@9aihpKh08FA,[Rd!EeRTi -eTR"hrP@)`9RFiaD+3TKiD4[R3G)GpL2Z4Rq01#iQrUQD-K1[#d$$K6c6*rG4CZ4 -h#B"ElLpA6-4[B6fIM5ceij(QGDM&BdLd!#Ff9FPhX&`jUY`KK9"QAXXJ*bH+-1l -Z@JT9aah0hE4(Q8@Z'&J-mQ1l#08'jBH&l,iF3jIASJqaFA'V)j[C4Jk@RBU8jIk -jq-9)V9hBMM9iYl4!(MD&bi58BD(pdPf!a2#Tca'AZadKqAq8iS+JQR@R1LjM@1& -UYRc,33'B&$IJ$*XBK#UK#cYBc3IeSbr21'S8-AQ5E8krPdHR$9bi2SXa&Bj91dG -Cl'`0S0*fE`VT6MZ('A+eDTcTV4mHN!"2KQdYDrAM4i!jrBImefaRmqU8+Y[Q92# -p5i`hNRmUpA!V+F8mcQ3hpR,ZLfEHaIk9*UmCj24Pe$Pa'%mjCCC)4FH+d0qSTD[ -)X2KqM6&UJ+[ac4j0fZakNZF6[YQbI!9YVSc5(3Yr+U5D@cL1A+pSkXE$B%XSCk6 -j`PLL$'5!Z+32+1ApKFP[mP1S!T8"UQcM$0011NhUY)l&NZ'Z*RqGfm2(B9rcd0[ -QXXCcBQ9JS8+YkS(LCPJ*S[3iQ0pXK*U&DLQdY*3Y)J#3!2K6`fTr8q!,UK#J@"0 -@f'-9jY`*KGhIDBY0i[Ql%GL+XAS3q2c'CSh'j,eSYM+h#X6T'`l2$JGMdI"@bAT -BeN@L6'6%Q%[j"GD&V+$TcE1a)H63EPI!Nq$'k86B+cU-r6lq#rT%@hKPG)IX!2H -!qIDi#"eX"bIfdM9iZ*b0#rZ,%H9kQ-*bK9$TrL0(HDdiU#@1M"*TK92%-KfI%-# -r4bcR0K!X!l9!mAa&%T'mr,IMCDkX$$PiN!"$q604CJSEMJqrZ5[#)rN9p9[+#Ge -6*#**%-B#Q(eS[Y9-Rk'%'FZr9G43-S&KK6EaV@r+fQmJYNie*,!E'0"DPCi(H)" -Hk*N1b!+69a*5[E+8pKP"qAV,8@h"pC[kp)-'Qi5(bIfLAP%BaKqU+*J[!4(G*-Z -UUf4Bih0"d"(Y'N"B0!`+4NdE%adN$hA*Z%'G#iX,ZQKSa*%$NS'[qY5i%deK45G -*4DMi2@V!)$)%ZJE'UA'XBJc*ja0h-5iaF6!#FN54cT!!)4GYU!lj*lp(DAfTI!2 -Mp`FHp1-Bj4kF*j!!BIbZPhIh*N6V@i(RFjBNp,'ZFGl`-CCBi$6j6#NcrhmTBp* -cIGMZ(MYTZml!M8*D9p2GAkDm%(Qlb-UpN!!1TDLik4T6q[Lj6N($Gl4#ZqEiMUS -EeZZmbrFr9[Fe2eS$9HqA3r6qb-9mbUm'Gq`,4)Y$[$YN@6K&02'Mf+91Sme3GVG -1,YdPed@%QkXJ#(B`Di+3!&UB8r,kG0VcF'XbDI!D4@j*eD#X2D0F-U`+l$%N$Dh -d+i9B3HM(9SSk#AUkU$D%p(,hV+dKJXQhpY9F&d*ND3q1!Z-jEPYTqIVS#c0PmPZ -2&d[IcYl!MZ((Ia6fNaNAj+pp-Yp-Am2c&K4rH&(8ePYG$)#SQFMMGH"(55jR-E9 --mBE4AdJmP(QfE['3!)k3!("&EC6TlS@QZphIdi&-d&f3!*RmDJqQBQDPDbGIjeV -a1[CaD&kKe%0r!G9c1lleR%bN4*bpkZ[f0l`Pc[I!pfTpBFM2!+HbF93@)LaBCPr -X`eU@B'r[AE#QfVid[UMZUhER($@f+%Hjk6cpTQ(jG36k9q'cVE,&PV1e5LB2D%6 -2dI!K@FJBiIRYrGm*VqPDPmR4Z('Z`C1GJa%PKC!!SNMTE#Hk+[ZN@akMJbYFf$B -4ejfXjf'BV2Tb,-+h(UYMQMSK$Hjd(8h"IEP5bGQCE)1!@@*UU@[[4r$&BT9B(!C -Y5d##HNLH8K3"123E5AKdBJp56r@-$M"ZHiVSb4BrYTV[cH@h%9SeM1V'RadDrC, -6FD$IdYd0dY*j5bL[Lld--Sm*K@%'b"Er+mMm9!j*rc+b'LJm022XhN[iCVpTR8U -`X,r9+VJbEXV4*D6MRa2PajDdRTM(RSr&LR(1#0rSED2+)DEdKX1EIA1!b**0F23 -Z)c')9D!p+DhfA$A`QiL&aEI`N!"LBFrajUfl+IY"1Ykp)kkVkKem&PaTep,&EHH -1pd12hR5NZS#[3**Rh5CRcAVFKM#N%I9G1V$5jhI6mIbp80SGLX3M(C1d3JMIEG! -b6kEdJ[Eq8XCrV1G9Uk5LBAb9FB,F2&,Hb*%*pM8B0L@8li,KP"Iq2mR8GNi02R$ -e6qE+e0+IKi6QDJ3Ni,fkkRF5Uml#(beZ'ZIq"RGdj%lAFDr(QJ5DPZeS(SV%ZiT -BGfQNaV3KfThjRVq@"e"6B6YCADQQp[m90p@*im3dbMPBT+L$N!!m(ICPV#e(%KU -qjeck+)%CP$4dU`2$(0lVR9QSrC,Y"6m0ZCh-I++i5VmK+Hr[0BMLic3imY)cd3D -P6"HUQGkV-l"Q)VU9C`k"%FfJ-6$QrV#Zbjp[KBp&l6kqFe`UJ'FGe5a$U(c%M2k -9kbTrpB&lX`eC+cZD'-VL46P2KKeDMIh8RPR[C",,2Rq5qdBm1#Fkq6NJ!Zm1(UR -YE!i[Q``)2*PE9iNlRMp"kMVS&J@p,m`aYd)@ZAh#PDeUb-+f4(0F&pme6[jV3,F -c[+Q&C$&)[)4ZeZ$@8%hDLH&6FeYb53U0`9YA@ca*MSAVZ0IYTjrSMc#K'Q*pH&# -0Eid#CE"he"1CFJU3!'DbFBqR9rT16LM2l,B*l""@)3-qZhY8ML2kk&()4'hl'l4 -'3''c$feJUkK`b1L#`b*%Q[')EAH[A"X#8'jJ$l#hbK%)f2Ye!9Yh+2&21f2"GdF -U9EYeLlQmXJPDq1*(eYITSdc%LqhFB3k8*2*'6)pcf)L#U#MiQS@&[KqIZ"'XCe@ -Y1T,&+I@kqh'IjD6Q$h1$'j*jf8b&*(lTm-b#!VYhM`A%%Ch!(1KMGlcD"b*kVhj -@'FT&[F6!Md9m!e2McHeY#hh4(iXBd2I2cm3!p`ec)%m$%%j4jP"G8r5K%i2LI-q -M%eGMab+fcIRNq919H6#B$2kq&4HNbe31"3Ma@"cT++ZE098@bAmVdH"T!cm*9@* -*M0rI0DZUrkQERERq#*MM8`Fm1e[i0$K26cB2&,8T)UYVqj0l1JhGpkISZq*883- -@pM-+qac0b)eG2F2SP#GmP,r5))hpeF"4+baGPXrV#I`B!cp6AX,E)DbMc*,9d(V -H(qH2'`RiaqH0N6c%%RYU1#8FJ$b)HimXLN'5kl5[ImIKrXqkp05iSpS[1`KBrdB -H`!PA`KQl$8TKEA$)ZUM+"ZN,ljm513)GR-+(L-D[Q#46A9F3&c@(8%Z46YikVdb -c(ll`FY-JjYSK&6mlr&Y9!XYP64rQ#)H8ejZTMd1&3T3mdi9C*l%``6M')jYf8mb -LJp`0XKb!$AQc9rL8FApq)q9[-T4fqb8-ITR-e$qcdq4pDF%0AjR&BIBEmKd+R-K -I4`l'&6#)-f&K4CKm3*r$d42(eLC42J8%C3RrH56rb8996V@YJEmI#Z9P3EFml8i -A$+$SFp&aF0G2F)3a,4NA*imbSbYFl&H9h9+Bc,bMK@%c6LR`V2CQqP2-'I,(hmH -!a5i5(6pN&c4mSPNY+G558)5rlieG+4!X1Ab5UiNqreKL5bRY[ADq'2cl1"HJ'GF -*#B"Q0k,Ci[h2MHGU2-bm!G`#(N6#'TIFD@B04#M@!c655khSR39)4pDjih02Vef -i@Cj8Rf%Z+dhFK5P$cebJh4RaIXN+NNka81TjVY8Hr%pPJIQBj(&CMlM1hMCMSZf -ApTmHVSYiiVD,mXCXB",[X@F&!(SZ2N86)DApm3(!$8RpS)mhY[r#Sfl8AcAIBP, -F-HaYTTZXM#H5!!L8rmfLSK%qL9mB3IPTF-@jX2KMLT61l1kHl3qBDJJG%L##M+- -5C5fR%`Kici6!rA-F0',VTrMLXq!HU`(R-9QY#-6,5m6RBHMYL+lD`&Q"1-D-Rjm -k8pcFEBKL@-EBNBik$'1SjDT@aaTcCIeZcNIA`VZkj9RI)NX9K@NGY1@p[@#!lhQ -X'0,qB,eXr,fSrA3L1X(4B6T*([G+RB6m*HDir5&F@0YUqSJ)Ra9&AXV&j-3cefr -MPrVh2k+mQpCFN!!iL8qjIj%P-I8%RT-N$G6j1Mrc+#)9*-a,c%IU59R5rMrNC&e -+pipaUjFHT3Y6rCfDc9KaQY*-LTFJKUPCP*%MHTP@FMEic`L,`ZEPaR&UX!)[B@L -cAejQ#Dr8GPX*RQ3SIM`25bh&K%jUHQAi+8B(IPSGh2h12$mK@XfP"YQVeh$-mlr -AhLL3!#TQBHVAQ0G@+!qkAKiRFGU"a#apKMX9JVdXrXjl[dM3l8D2@&[[fD2A642 -5FBl-EKV#ml&4l*rRlGE0*VeQ-*GYXY&YBI,YFRD9BYQ"Gpp$(#d@iJ9lQ+&4B@4 -UrF@QmN"6GGYYE[1Y5PHYJLNfX+i56'2(2&IkkZ!"HqM1AFdj4DB6'RIadG4rkH, -PhGKM6,GIV0D'UVAa8b*p-#Jf@2kFYVqJ,G"mr89U`"rEcSbCHVVG+edj$MTD*Fj -&GY&S8UIJK9I-U"2rZ$fjl0`bfdB1b0qFSJqPYH5FGj4R6d9jQphES-Q,Ii+@Q`T --93HDMSE#8PH#R+r%B1GPkQj9XIiY@MV6lh,BFKC@GbBA0HiMGl8fDM1l+K-j+LM -)`%Xi'[82JR5p6T[DVf%8U5A1F165-US)0BBC)Qm8LZF),@FGcGPSJCHf&*ZaYmj -bJ!1##MBM"i6bkIBP&*Sf,(EIbqVPY9!+a3GZ+#kdPEc'8rHSVheYCc+26R*&kT* -FS42+RI+8jjNj"T8J!0#T"9aj8e`lC3!fL(RhSfVM%T@MaGbhNP[4C*U#)YK,IqI -F%(8Y5N(-KAaDKdDd&L8pm'BUdHmLr%$"5VrrmPCfi-aha@JmqmT4(i'lkBEr6@e -BFq#aArJ-Sk"M6N@hL-68#f',E5LM#4Mb+F0)5j3hJ)LT"0T#PcS#qAIe82KP+lZ -%pk56+9E2ER)#!$Y8N8#RU9KFNNaaj*4%Ph5cpp%KLe+iZ!N-DTSPkNE,r0Y)[CK --ee1-QfNjJ,ZmS@pXq#`YcK)BBY#j8Zj88HD,bM*SiLUGUN`@Z4I"X,SSl4HBFTa -&!@Q)IC[aA-(-r2G$1aQqVKj3qf#[CMlkhJH*'J-Z-0JKjl&GHff%GRVAheTiCa( -*pf3-c+NI`[F0Cj!!64+*SI0dI&P2miVQbq[aT)3-29B)+V0pSTUr$RbGZ0GHY)4 -*(PXf3&RLCRl19(&+V+L$qmhD)KN9hZV[55K#j691TI+5$qC'@-JJPMjI@T%alKC -3"Vd3ac2hRK+,,p"p4ii`T5!)P%piTEb"GJ[TGIJp0%B[m@KX$XPrPPVM8Q)LGI` -RmBpRc8BTM!qY,N#N1,@iN!#k"ad,5rTF58Pd3KUH#UDm5D20NQ[iE)Q0TMRCb)j -Kl+IVZ8@Ca6F10-U`cM3G5Sj1br&BaR8b'da%9@10N!$b##0KTeB95@85X)848[m -BDE82N!#2!SkX4acMJUTe$dr%G9C!%FcBQm9%'QTeSMp)RpEGJeT*iZ,mTJ0L6&Z -a[04Q%N[8H'rip4BeB[m$i#CSA,0-M%(G1)+$AL%Nke3F6UK1p&b9hRRq&Ce5h[Z -4$DYA1,0YN!$!Hb,$Z&h'*'mUBEbPG*bp`VRkB[TbZJAeIKHSEAYa`#Qd0"IH@e9 -PaDke5DXBrH&BIdFcdPb*0Gq94[ePHH4aBT[RTmQ`VaG0cYk8QASr4*!!mie,PiR -DrXb,4MdU&clhaN$ff$ppr!9)[6#$40[)KVpe*dha4b,0f6R09AfhlAdCUSKE8l` -Z!403PRb&CmHcNRf*'$1`qClR-T21BRLpFH)3c#'RJ+(dcVpf+#e(VlSbDejI6Qa -m,b08@DAVim)PcaqRY46Z2UAM"pAlB@-SmPf,@[EKeL*$0pZ)qN8pjK54TEq*ppY -+f6a-SmNDBB8i*2B5KFUAKCmb&K@VB&c8,j`#S!+JmbV9A&Qe4V`l343T`2-ej1r -XpX5a3!BJ!fMU+$FZ%#4J"flqJ#5TZhH`QeJ(j+U[cDL!al*-kBK%)UJ!iAqh4qC -P!+bRTR6`%5i0+@Y!qe"Ga(N,rE6ECI#DfKdDqRSk+cl(421LYINdcj*M%8F`Hq2 -$LYl(2JPAB69@(hqf3p1*jd5dPhj',e!`&@FECI,#IQXd+EFQ`cPeBUC3NG1FRT! -!iVS`6bCB1A+JbZD,['J9%LVZ'TE&aABHjKpR)HHphVZD'b)VF"r-3p3kI,Z1#C( -i&6SKb5"[#EP+ZliS,hS$35r#5TB'ZfB)aq16a'6e9Z-G,Q4)a&YFSYJp!$hN0[T -pcjBPmMbI9aeDPVME%KmI8f[6FMX(e'rZm%-3ST18V"afmKYaR0EXe@Q)CXB10mj -SViYR4I(YB"U&X@(JSb0GZ!kT[mCJEicVeF2KBbTVL$1(p@[d&14$KM)!Z*%MJ%A -0,Z)JBUVkQXD2(Rei0*9%)q,f2$-3-eX38),FI@fR#JP)B1ibClM38jR56`6U+lD -BfKhfqKe'(#QBK&1hi@rR,N55F`I,a*i-B,'dB$[4kL5)-,0ib,JMAi0e864iFc5 -b,C'Y(GIr56S*$+!"j+I&01CSJ2cQ[MmqB*SGD6I#6-4r"%UE(jLYhFARA%h,(#i -#bpRVIi(N&!,ehF(ihCTV*E!,KPpI@,ap94XME6(4S4E@PdH42,ijIYM+[a'UkC6 -1#2XEdJ#`3ABPBGchZFI#+TY&U,YUE-B*JH,jeJ"-jm3lTqk$!IPI@1EGV9YG$"Y -iU0eXHB!RMdaH*2T2X2rJb+-"Pi@Hh0(Fhh#0&SDM688CfH2`14*XGlmF(2S"IJe -P+i#q4Vr9!'A-pr9Ibda#SA+9'chZ00p-&Bi0$H9LB0h6Gi3'P1I([rpaHIR1&&F -53NXH,jfGV&KmKDkARXC5J43r'(8h`&KcUIUL`RU6i,KbG*a4`lH&jAVA1QeFaUp -S,,8XYJ6pTaLiI@d8*%0ZSmC$HcQ2UE6HN!"PU6-86hNcTecqM6b+rqPl02+Mf*3 -4%VcKV"`lldCUdr!beLXJ)3@-&@+d3#FAAPJNp,8L%,%mN814EQ2T#&EH4qe%68Z -&0iLRj4i'lH$LA$1da5b&5R6$QB8CXp04&5+21bT2SN!fba8%qJH&Ylk**&P[G6d --2C'P&XD%R#Y-QjM"bD$PNN0E4E'Pc84$MN[iidmkYG(lqe'5QI3#*F#p)9JRNpl -hjB%Zl'Na$88&$`rFRc1EHp6f1AbRP+Zm6*i2U#XIidQqAjIMI&F5fLl[HIDdJjD -1H*AGi6bDHLbCBjLAqH6ND8H)C0@LkU)6&-FljVJE%$NheZp(cP6'*p$bZ$B4kH& -1TX3(`FR@9A)m1jNqGmV(V5e%"LA5*1KYV,"X%AJL8F0'*4hpYCCa&JK*apU2NPl -"1qG#D)PR%GUkdF4DDHURrQZ(d$L!)[e$2@AB'N4)k2UARp5YY1AKrRE9JmN3YJl -b&TUh[+'&I*1d)hBL8AJNAD+Vc4`96pDp4DR[FY!`"l0G8eq$A56j(lJ9i&!!1S@ -f&@Y$pdC%KCGfcR3D1"Kd#5pP1eDHP6rQ+'&L`K#P8V4mmFM[DjFS",qijC9Ne&R -iDAD3!#hKcilaTd$Imkq+4FVKcqp&(aPEBSKUfA`J*mRB6$4jD1Ze'bXmhFq)c,X -R(r4DSi0mi4&@)hSkX,M2kaK8b9b5%kAd'$(EHiicCB0'TNUfZrG`hj6$q"DQIaC -*'#X+,*Z,%#IMIelE6!2EDU8YhRjqULGQ0%Z+!ZDlr-`[p9L%E[Mr+FV+KXT8'VC -e"m2@&CK9drZhE+aN3r"$10MD$"b$iRN9bDj8GYhR)`c0j[Z&X'RSFM(ZJp+F6J, -$`pY'S)a,[rVHcS06f@ec0XR)5"U,c$6XCAX1mHfj"LU6jUi(GYBeXi2hR&"b(XP -eDj!!,G,r!T(rFSk3!$3r9R*0dTR)e%TbqClfLfa+@$pk81D"k5$!fJ$UCq9p&Ni -Pr0pXB'3Z6a@qAL5a62V#IZ*"@k#JGRILLbB2FV3ZKJ9A0lSIkI%Br$V1'afkjLb -6HQ#hc(bbjI#&j-8L%m@M)B9ZLiY0Z(N+k@BaJ3&Q1LHlRhF`3f&V9aF)SNNC5&Q -88b+rQq*KHSae5J"$)kDHVI"rEMXBi(2DfQ@DC8IGIH"N4N%S*R5JDi4(682T!1H -Ik!`''f"e%+N4*p6fAPcFL,4`+c(-i8Rl*2E$ZMq*Zi0L1II*@Ph%raR$Ni4c'0* -$ShSD8BAXTIlaD%1Skrk$Z&+a8(V-"M9[Pe3MeT@4jH%MlRXFC1DAPCHr%eTM-eV -"T0P4GaEpqZCF4Zpj%,)E!#iYSUGA30[B3",L1CXHGJ8Tl#kX+L),hZ6d'`VJm'' -J#0pNGr&NS0alTbR0Pb5IX)[+SR,1'*!!$GJZh'V%6r$E8I'mQ[Y,FmDC(@6lH(2 -B*I9jDf(d6h84S)RDS`Lcfb@$p&ahNP6ZNS,p`ERLFQZIA-ZF-BHSSr3kqhABS%6 -qF&C+4dTP$GahU`k'#kcm+V!IRV0h0BSTh`3hFmVJ!HHZ6B6+G'"UAP@ra1TT8%X -PB8RYrXkmYX3$10*rq)52KY*6fqI`HPNbSJ@*M@f`CbGR4-[k"(2GCH-!q#2aeG4 -d)%J$HmQ"T2JQ@D&)hR1MLUTjEBp$$kfBIS&lc@ANXG#-(8!cP6,TQjGpD++SES9 -,,acb@GI!aDMCLbEj0B,J"c$Xdk22'lHm(UJA[Zk%e5kN+GaG50@3!"88BLBYI2I -[()(33)3Ra2DkF2a+69jV'K$#dqP`H0H&#GRSNm5@VV[(LV!0ZjA,QEKM'@#4CD3 -j@J39)f%jef5Nrh!'I@@a1e-'FNTQQJ"eRmdhSkSZKCLYYqDq[UIJ4c4@"EcTT+5 -3!%ZE&CRQdYKY-E(E&)rX3+kq'h%+I'X5!VV0GQlDh&9"l1)P#QU+*QDV%dmi1DY -#6NeZ'f%dTM[r!h0ik51'MGe@K[pBNMIe8GkQ[b+3!,3AHfANjJ8KmjZNbC!!Kd" -*6BQreQNRM#G'FD[+,K(#mXa3(E!XrjCb0KKPP1cVAXcc96pZqaQHJ5115)JL3EJ -ZI-)"5I#BA@YrRJHSm9kGlB9aRGDZB"CkiUQbUS+!1p9'pHm1Rr4T"%92mp9)d(R -Fl+D#+p'3!(aYJRqc1ZFm,XZ"CL3Q,FrFIK2rV-NVYTbL-mAQQ!dXL8eQ08#Ul8B -KRX0f9P+TiZPMF[df(*q0DGHaeCGTJGrS9aX%RFT5amCUC6RYb58(QR-UJE91EQd -AX9KfhA8X-PPG*6iPABfI`"HCh%K)j)#VSKLS)$M2)q46MTR8Y%&39!DqDJrEa#, -+Sf-Z26$9D%apcdPqVr-YNNZ+6)Vd`6Q#YcMk*[d[4k6JL0N&4*X81b#V[Cl[M@Q -V,1pAmpJ%0-mPFQEdSl%rqB)`%*MJ!Qlc"!UbZJ`N(SX1iN($Zb(B($mEV+ql["V -"T3hLS!UAk5[Ffh8arRjZdihS'$!2B%0HcVM#MQX$fRA"6JFT22-a#(0kfV"-'XY -mE3$R(i%!P2QT5QBSH-Y+m5cX%pdMklI9YmrlL'X(U-6rGFh8E)GS!jQ1,mLim`N -ajRm+4qd!#)M+94*dk4CAe4G53HRYZ"9$0K)&1UB(K`FJMc,+K6P"%0RADA-2L$Q -P69CLhL,RIf9Ql)FmJ4&JXG3R*'*j1+ef'pFL)d!Q2p+%[Xlf4S5ChD&hZ&NI*dj -jf4bleIBc)j0%eP@Y&0@dc(8m)5D#0A$8,K@HPe'Q4M@JNi[@!l@aND@3!1Ki)lc -m(Q*@8K0kDmKEAAC1G)CTH#MhP$9VGkJ(Vb3&fXB-MY*NVJMU@I#b-PlS@NZA+qN -d1lBCfjpLN!!#a#U3!#0I6Ui9B6YBaHS4e[fXcKQbQZGRf8RmA+iXLD`HP4RfLJ4 -9GV"Q5MaB)k&Rb)l4!F+CRG3l@XlXY085CbaeS%&!ipDjEq,akbPK0"#m'T*4h-l -lq8%kf5'X,QE"bb2$V-VY`aXpGJ&dbe&G3M3d&dI$kpq*iB-m2hP[3[T3$Ab%LEF -YX,h%$YMTk[8e9cClcYEkqQbB%H!0am[E@k[A9A%8j!"+8TVC'3&ZqP`,)ZEU"m[ -hT@mSbkkAlEm4G-1)LEI$`C1a,T,d'b6G%jic,JqVL-H&9c82*[LrpTQ`l1Mj`2, -dlCl5,ekHb,P!!A'#N!"XJ3EHFB%&2q(#iS*6mKDl`Y@H(Grhb%BLY0rN4(JC!AD -[r9`KlmDa`T5J-%jhiC!!qBVFd9'Gp%VKDi1Kc4`,G9,@,PeUqq1&D(m3-UhS -#(TdmdqCGLYRBAY"LQEA*3[Adq9ql"QGSX&Ih[Mjc`NPPbkC@V'"+d9iB)h#Md5S -`KKPK$Ki9ICb9Kj!!eNX(%fl+NCEDb(HS,dFHVlH8GJb2NMLp%b4+2fM8qbA@r#* -Uq6m+FDqCIkD(1MA'0iY3k69kf'+U6MKA#iL&!G)(,J$4rK`hJZ4jT[V&X&0L-+k -!bA,2-3UrbYJSSFj-k"Vpc5EHr6jTqVh45`hJU"DGfkhPcp0qeI9N9%#m2B@AX-@ -Y@bmF#e3"TQ84#%[mh-hdR)hf6ad'i#'dHXq*'lNH#+TJ[#NZQ8-CKp#Srf[(0Kp -NR(MS9q-HRbGNZIG#&KUq#G@$aRUlF"f,1b`UkdQX)'#d*8T-cdL$(J[3$*ae+Ir -AlV2T,r0*3PrB1h-Q-H9ciLT,p(QdA"2&cNJ)rZM#jKV3fYcjBV,$l*b#ik395)` -X651f6i492%T"m4+(5d*HS"2,GCJ1`IM0Q0%ZpRG58MA!%m0(3P+&-Mkrp*V(UfQ -lMeCU*lS`4"$fkkfGQ@E2MTA#h@jC4EiX4&GIHpC(Hc$3`TZlCkKT&k+IcU`,q83 -1qQS`b#SE4T1B1aPi95CUDDbPe-h8%Y6"5c'L$VKGKj6L,c"V[l)[@TiP$UC41Kp -9VPAE2A$Q@09cM-X1D#2MaG8[MkRcJ!!9Hb2Cfafb#-JL@JQ+2eJalC8Zl%TrjF- -$dApmh"rcidX4%bLb)RJ!M%H(VelM5Fi,)X[drB,[(T2p)0(fq*`a-bKYTV3#Fm, -1*a&kDM"[b13GXFB()@5(LBQ`H#jRfVCBJ8R5mem5J9M"YR3(IXM9k`L+e1hi@RC -9hU"!iTj5L%c4eiVB9,ED%TSIlTr49DGI)ccD50ZQM'JEKqp*"@LhJNbFYIaLkH' -R5LVLII(QVqpTfMUp(Ll5"SrJr+5EZdE"3UGXB2Urq4*EQCc$%Sa*XL9Ai@Q&mp[ -a2a(J-j2U1%ar,$I`10(aaiXYGM8QI1PPi@pYU43k0L)DSe8Y1bjEEV5q!Xma@-' -V+',+9Nkjf&ck*,Mc`Nh3J(Ii!'TFK'3,G'-Y(@d3X8ArTI3a)rRRa'Ml5*GPCQA -'"*BeDf@#S31ep)hDS(&h2"F*j)NA-MPd"(E6"HXh&5%R&QmqMqkmCcl,Y`)Jcim -65PME3PdKk2'UK3qriaD0mq4#ULL'3h!NAqY-ri5*Y!E`DKr@R4Y3C,TX$NJ9&c, -%Km)D9IJKXr)4'dkDkBVX&N*DVd#D2D5#f5-SNBR9TJ*&!rN&38GIDXpFalRb%(5 -9fi+fb4AN5h9lF&"b1UZM3MGVV*2jTEraLhlrbLPe)'Ti*VXmdJ3R&J04j#Pq`Nd -`B`1J%QUp#KR(Xh,QZaRa+9eUCP3ipF'%Ti1&r2#,9V0jr#A6jEl*FDTIM5VY6eF -X$%`jYBJacb$Ufl'd,0&3BGm6&TpP'c3c6-A3$$Ua'Q!RhE2&9aCpa&8*Q6SJ!&9 -AJV5rVSe3$M)ZY"#8jeJ"GHkAe5j3Ehrh10b$YQ'")ZhQFJY`!m*HD'8@[V@9F9- -IV#aX3pY%aiY4BFAcR1DN'JX[*F3jmA8R1*2L!3QU+aHUa#AjC$Z-h+krKDU"K,H -frZUKQk")L&iQ@r--De!0-FTpkKB"L!E"FdDR21V"cS+pU1*6i'Vhkj!!'TmjB(b -M'`0S3SK!L2hT&PUZU@K"j[@r+@kR-jL&*`$p5ZfJN!#,B#jM+RLG[f$biMqLY*! -!DM"M(!G1Yi)jKc6p"aLKC-FbE,cHAJqpX(C`aTJk'0@,8'r0Mqa('HHd(mUr@NG -&r3S$@6dda"eR&%fYikYI[R-@6,6rL2`M1A)4@&eqB!6j!f)Dp%K85S[M-9dTiq+ -3!$,fQI*(6Pa)RYclpqLJp"A!f42hMpl9j!ZK$9Ha&!a*"[r1bFkeeLIj*$CJAlh -1dL#)m2(1C%IF`lp%ZEDTc!Xa16!IQSkdU[(QIIDaQJYf&&pGH,45c-!lXh8mhUb -Q`C8K,Tra&J9@a#i'V)QLI!(`4)Eb1*%Ji4IrG2Y,GU-5!i"b*Rk%"f'6c(%pmUj -0hZ,QIC@!1$(13R(2r3$G1!@rNXK`Z+2D@$miEJ`(1-*Z4A-jP4kher)K`rN%f00 -@2b#IP3P+6rQUqfrqKLP!m!NUP1EQ5)Q+LUEGc&2jmT!!CAYeeTm,#A%I04p0(Y' -jc#VjEeSk!*XJ9pP6XN0Y)JrD-lMPJ`)U@%%lN!!d!$kS$d(GcF-h*USJ"BRH[!e -ZSJ0++*AqklU(!bRFhfS$PFP+hl@SEeUcrX3JI4$pUYlQd24P6(@r1k`KPF8-PK8 -Gd%AN-9Q[MXUQ2N[!*+XA)DP%BI8+fRim[DDB&9TdP`5DJi5@Fcl&1H('c`+TA"0 -3f&Mi)3[Xa0e#8K49+NF5fJ"HpYRDrPbK"b4klHY@+#PIDQ9Z9!E!Jc(l0J$+DhA -2dVm[kc%@Y#bhBTED(QJCemj0h'cCM$-+5QJ$N!#&,5H1QV@qhYV8Y@YVjX3&k5e -RP9Ujk@a")+FrIpd@DVLJqr[@L*q$Zd$c)$1E')Zc-QTkGFb83X3&r)J-8ehJkZJ -T,QFMik5YmYY,Lc"CS%Mfdjk*@0p*cJKq1LK+K#&L)k8RpT(9kXm86e9p&GB-@i8 -a%k)`m-RFHaQ6A!I6kf9drRIbJV(,SF)1&r'pES$lUKdPELIqb6K,iHPpI@dm-qm -2l+5H[CrkVUhS5`C%,J@@T-Gi9Dd9"hZ,C+Rf!c`I*GIDSqj9R[E$U!(K+c*iU3' -epJr`DC+1Z"FE"q[K@!H`fRFN$1MKm34h`p4DfeENe)2NCb*YFSXl'LL$Z*2qcJ1 -jR8"afJRkNr9b%Y,[94N2c[S)e6T[jk364S)[H@RKA8i%!(rj)5mc%Z6d6Ph59IS -XX2@CMkB1`aX$3+6G(@8!fBL"TdKhG"Y[`L2-medlFZhCDqYaaL6YhPbN&bjYNjC -8Ld-l1cUh0,apA0%A"*Jpj[c$0[QM2558TEMC(8$$CVRfEHGDN4%drFFKi4ddQdf -d#L&A01i$DdBe&IZ(9$,NG2r6r4D"913KhEpQ49PV2iTP8"3Sh4[S0,#I!LP[YY[ -l!9,$+cZV0APd$bC&%4X&)*KKJ(6Ik9Gke[bU,rC#$K'j[q$kjJUejJLVJd)j9dD -HmINRLJGV`TSchU*H%mQ2G*1209bFAhRIdXGMDLN"d`'TXepU&8pGcFK#(,bDGR" -&)6Zb2KHlrhZ+4RK36[!a1e9G46&8eq-J`#fI(MQBI@h54[J`!F['9KQTD"14#(b -$RhG9mpX`FMR@EDN6aMqDVDS'Ap2UK0#2Ikqa23L[H4kbY*p'S9)`lFErfIaHGkL -HmHFp(cccAZJGQ[3!%$XZpH32FHBP+Tlm&ZbPQqG'-VTSYiUfcjhUCaI@qJ1)%Q& -!N!!dSJcc8YcSBN'#%+0*#Qe[XI31paiE3HS8,N,-)i,[,82iBi%jcRY&11F"*a' -(!TT1$aiXEIm2fR@r,'('UiHj&f)hqf@@"rR6ff(Z((lC,TCkmkDY0CrVrIH2$Ik -KN!$Je5H*"T!!HFR**ZY"PK6rZDj9fT!!#T!!-jXI&5TG)Kprl$$m%Y`#IT-0BQl -LbBT5QVb2ihAR@$$0jY%IbcEb,9R*b5H$"aq[S[K0pLImfD5MqM@+Y`[Z0Q"K!9b -@,BSjF5Yp0IEEMYV%$cF[d+*8a)4Y5[Q4eJeG``p+KqUK,5,84!pDadYi@`4@E6E -ip+$i'Jq`aGVR&$J3456*jhGff8k`U8ASB5$$MhJ[0XcN9-90"SI2CD#Hpff[lGL -mkjK50I2fdeApJqCQJBZ4j'-&1m#%MhUc-c6``dCXekCdYS95q6K4d'XTTrFK4`f -q)bX!$#cDkS0ji8bkSbp6XUE%IP'c*KZX(S$ZS5fdEhj8Th[YGa#jr#l[aNIm[53 -0iql*GS%&XP3'$T!!3I1*ZMK+#U6Rae"!"ff%3(@LQd4qTN*JkdU%5UJ51!D8*(q -HSjpT*`J'AB0LM,m8(eK!AP#i+l2K#*K'ZFmd4BmN1,)AVEeS)E*N))`rQQT- -NNbTiKeTN8qEj'jRJiGP3TaJ$mJJlL156jM$adqPc4BdZI2'V%,63B"3VQ#V+pN` -b)"QaFCC2`a-lkqIZ6Pa0ea@6)-*i@aG##F3Z5Xd24T!!hd@e3&)SemYCLhqN[&Y -4bcJ3J'*%(S[[SfkII4YSUa#+L0r,e8p"[j0NE'e$MheqQZrm-*0V8GZXfFdA9&` -(f5F!J@P&TL`[NjSd+G(#6BGH"c**"emD@eIXjBPAVL(+hmb'B[5*`Xh6N[Ee9e` -Pl9XXbQk(E3-jkZV4UD8PGf1dqc%[im6iXZpHR'Uc@+l%cm)K8j9C1D''B$8EP2S -%4Fh'#T!!p,400qf(C!81q`'*Xj9CQD-Y8rEa(F9`J+UkN`Y!LT4A-ZT``J#+f35 -)#2Ym'P6K5%,&3)aA(Y5G!6EZ!42HXSH`#kYapSG1jlr9PQpIZ2+*VJ(RbVF92eb -@k-$M2d#J-#m[6)!hNq14&UXR"[rTqc`fA+K003!Yc`YL*QJpQ&(KllfkRKjXff4 -p'CG0XZj$&bcpRMBK2GQ"Z3aid,8E%1bSKEIf"HSI9rTfj,2fI&Aek0'C03%q-'R -9$U#kG+$J@)mF,+Yll*-9j6(rQ4F2FViJhI1(+K@SRXmqjeFESlF"FKmck28,T2F -`f(d@DE!@P"B&IV@F`BA3"qYbrmbrfN%QIMekl2)VpUCmJ3f%R5FrSZ%55i*P8`B -(1M-QjGlY#@'j6IRARd-H!F"bT5VaTKfFBm@YK5$XFQKT,55H%,18DddVE()U&l- -i+rIYA!P6S2VAf$@13ZfIHNB1kpRc`[ep&i#"Gl8"(H"&0A`'E2c@mD@-8Q6GK6D -49SIk,jP-[!8,(Jf&J!kQ2BX[c#+BP"l&NS1%BMU)k#(9"&Y-5kUG`Ij1*DJ16Ie -3&H'k,LFLr3*rI$#+Gc'F,Z&MLQYk$epF+eXE32EcfrqBfqXNe`GI!`1ZS9E!IdF -SY&5Ea(mmraH06aCd,$C(,G5JYRbY-U4-0#Q238D-c'YHIYLAUI06%&m#M@26d9J -Z4SMf,$95XY-lI@A3Z(ZSkY)[Ydep&dV%8Ub1ZD1BXV%H"21EJ[K0aI"[l5Bh9QS -m+h'AQr3"EJq`E0kAESb+PHi*$XTMFG`$ZM3,9lMXi1@cC[GJLLM0K#4hHmkbCNd -XFC%hAkK$#`LD2ic)CVq3!1"AM$Q*2Em1l3[E!T!!`GIRD'kI%H!LITFS,P*Ik4e -ETYKQ,HF5G,MrbaLp"Yd8#RAaR"+H%XG&P&&RXUp`9R$2@kT4SB!&4pY!%*UYPfb -RkMlJ%6+E8LQp5QG9ir3M!Raf5iN1FpP1pRjHGJ6BC0S[D$F450G#3ZL$MM"EjXU -N6#mKBNi`*FZdMJPfB@*U$"SRQ*!!rBS+j-E`@KLBNdi5N!"jQi55BG8DGcTP`QZ -#68ajkShMdh)Il3[TYkPU*8S[bFQQ,K,"+j!!cGbMF20'4&E0K1BpI"-&(K%f5)d -$mP#UKPeGkYfS(D0(rm,4PKkHM3(T-*0`0P3GA4%92BNiH2MjVA9l`hrlTBY#d+! -q+kdqE0Lh$Pk0ADHDP2GHC-[FqpT0()LBZDE`LM'*d2CHKplD0Jh&pNLi"H##8A5 -rk[S2'IjCX[9iTM1RX9&BEip)3`P'Te*ml9X"6PIB!Pfb@qhD&Nrh!+@3"!%!!$X -!J,5L65qhXE4r!!"e"`!"!"B!N!21!!YV13!(acS!!&&c!*!%$`"8De0SC@aXFbl -2J!!!3,*069"b3eG*43%!rj!%!*!+J(!!N!C#`G5),EBLJ2a0ZTi[rUNbk'iNed6 -!ffXZ8VfN`*mL8Pj#5d`b3GmYmHKNQlJ2'r[Kje(KS$%D`NZFAA1'K5L%[K8Ik#E -+%9Q9m1-"P9J[B2Xf03HH(*GmH-jL2GpLUK0K@@"a6r!ieL0P1a[rQmbfPYl`2D1 -+8ST(a1j0f4'kChY3VIEZlXiY0TE(0E[8k&!D`fbbMiGBi[1B`JdZhL18q$CK*FX -52&j@N!$-aSTia4rh2b'+3SUTU+Cei)R@L$-L[eYbadaGl1iJ$FG1l`qDB5`U-hJ -9QF'4I6`@icpr@BCrF1kEVmT2NUEkqTj1HT&GE1E,dj%p11##M!F0X%9MD$&@iE% -X$Sr5"1Z)ZNNi(l9i+4XD`cGXXNdq#IY3hEB6X%Z[0[+&H&fVB@%db*4@eN"6JdD -L6Uj"%L!IXmD#M)*9f#&(%l+VCPK59!)'q2Qmqh6R4cZYF0BCR2Y%SGAPDG&#EGL -PI`QXmF1ViZN"ULb[2[iCCXJKYd8@KkC-jiM0eYNPZ6X@LhlKHS!d9q5lF*XaY1D -",`PC2D*GiYH%&`*Rq`RB+@9YR`M*&jGqACad`k8liZ"94mNaL#CaN9TVAL4`J9d -!VdhZcIm+1Ki4KMp0)JX&CrUrE5)XXMPq%f[D1ke6a"m(Xh'bXTQf0!elX6HYQCF -E%D#a-Te@Y2@V2cN3004aMNIS&JZFZekaeqb(A*X',9Pm6+`1Uei%XC,23)-aPiA -%VJ&&USiI[CCEU0Ppjjp*%lC$1kPQm)[ZCKbN&P9flKF"'"C`VLpma2r`S2`&XC2 -',ja)T0bmBrA9J%)GG51e!bf(*p$H2$'+Apq"*3%BVIX&)!kRDAYDLd8@391S!KB -lRpZ+N!$Z,jSV"9GRChY35[64KqA9ZMj5QBlq"5&mRa8,`G,b0$XK!mU3!)YqGh% -Xr`@)Qq,1!0[UAljceA8i8rQlHY#PjqLiYJFi[E"4Ml4Bk"q[131bh@IJ26GKMf% -CXMHZ!0B8%lC+IRFV+N3%%Kq*QNh*dRj9a!!5``HM[J`*A`p#LDf9`5f#F"3P19G -FKAj@GZe-LV8'QP@e4QlAD6+ieXPPEh1RqUfrXB6m,cRrfp`3Jf8$BcfAd`&k0V4 -6DA)*%T25kZb)#'HN46!,VChG,XAj3RbUESF-e#Q[-CPfG#9hQ*B$S%&a$cJ"'!f -i%Rr-"k+hJZ`A$1HK,1rbU$&r4LE&G%[h)A2",CbaCkCm)aQ%)DR"S4@-Rc*hk6r -pRA!'D[q1Z*%FFFFVLTdP3'PiZh,R2$YKP9r2B'UNSq&'K`#jpC',hXdm&6NPQM! -r3#FDb3aBqS'I9Zf3!![MhR5HmLj+fCJ[018f2ND3!0S8T2$%,SRhmZi2rUS0#Pl -fJNSq'%5*l+$8Sa[qqR*E)bXBF,mUB-0AUrqP(%(hMjEGILjl@L8iZa5m)4raiIK -e-Z6G1'&#HedYXIPBU,FJRKD%hkm$M[@`0*S5$L'0Y&GqD&U,Q)+p0Ua9+,1VH3h -I@(6M*(80`GM(A&F*)4p1*U[!rpN[XHXbTP$AHD8QM`a9UeN#L3&EX42M(KD!2TV -2HL%RVM32aI9SLL6Q)NV)rH5rVp353`Fr)*!!J9i3'-rKSJki-G-$&pqr!!ZSm!I -djL,LVP28"XeRH3q8Z9)jrT*BVLGjZf)JXaDkrk&52lVUrC@!DI!FS0NbbdZcBk" -[kE-IPMR5"6+'b5R`-pd,fGGfefMlc`FbPmb'bJ81N6I%A([`phK'0122@"@Tkr% -"hqYL(Sp*RChEG"2&H*qh*,mR6PHiMGa[E1E[rRF5cY#fLPDd`"9"3E`CFM%3,bQ -Z$[Z%262"+Tr@H6*9k4bmE$YMd@%QGj3-9iF8Z)JMm69!RmU4l6E)5KTck#ap[,S -3V9j,4iYrYJ*S9@BM)1he-fEXT3p*H2DSIKq9TXSE*c!'Z6pMPGS#KGH24+41NE5 -JClma3DC(0em,"1XV'6%SHmESZ)ED3q8XIDdMNCQ[GGfUAZ+&j#+""cmVHYq+,c` -Cqd-CT2+&K,9(5+RrCrp-)2VBbr4K1UF8S8*r3$F'Jj%MK%3%9cEGD("pVlXDI"V -NfaDUC"5prZ0"i%c#+&jd1(Z#dlCV`j`S+VNT6$')!+Pik8I&2a69P22N#$qZXLR -KP0RYXlarhB++#d-"k)Bj+$+0!!kVRVqmQhGN1XrZC398PHr%'VS8i#MhD1Gj6df -k*+cS43HC#I2%Gmj[fqAQil#IaQ3+khTZZ!qD0qRN3$Kr66'mlkfa&'5F[mYeU'K -eM$Q)0QmKQpD[++T,TipJJ6)QI[JMUhhYQR!%rDG+UH!dH,P)hlk!*I#m!1[fJG3 -1FP3H8J9I&-E`k4S3l[)U5K10Gr"Md!M,9R-,*B0$FM(M!m#5Ermf#"04%-XKX3b -`khHGlNUS(E@"!HF"qY8[DIBi[paFeMU&cafKmYGMDZ`E&"dh(%,$TELZX4cf[@a -*YX'`5F4,brP-jeKS"2p6*9LD-6lq8,9L6KibK[q$+N(Hcjj`PZm&Cdrl)Mk6fVM -N`Zl"fI6-R'MImRj2iJ2L40fPkFhI6cdeL$6e28@q3&-#ab2S!qGlBIZaL*!!YqK -'9jq!'HFXZ0@'RpRXVG!JSb3D3U%q$--C*a8%QJP!+@&NMf9Q1Ga9Sri)r2NPZ1h -f(4SRbcI9MF%S4SrU6j*CD#H!&XUUN!$RjCj$*CqUj0FC5Al8LPM"d2m)kfmSHYm -%B*l1m,68@pC6RB+$MMbrUU"Dme10dB1dRVlhc$XThlU'X"8a0PA,RbQ%aVY4e@c -B%E1$GLTqe'EHLJV-mc+@q63D'C`NC&VeM+Z8SC&U)6(ql$Z[m8UX%A)T-mc@ae` -bj)'I4T)FV0[-%iN"0!X`d+8%GDcQfK#m#@SI&%4K`[khlih8cRk[QhYKd-i1JP9 -r9X[JG$lB)0QIKjBTK02&cfadfDP3iXD$f66rY+&MJMZ0!*L+I!$SemQ'%RP`PJA -5jbjch0Q#UZJMQ"5(UHD&j5E-'erlV"mf!r5S66Uf6SDZi!3'ZpT+fIPmYL-L1R2 -9EaX-NKSZQK2+"af,h(E*mI5DNBAQAi"Ji(@K)*!!TPUJND!PXe'8cBDYhmm`1X2 -!F(*'D$&YD#,IV$Tk"ViRKf`ef3Rq%!@eJCB'BG&HKi0N%Ed2*f+IXmEC[BNq(E8 -Qk59Y#f,5BDBb!I+4&EqfX[Gb9[(Rd,kbiQf-JRGIbk+4-dqZi[1N399K8VE-2f[ -f*5aGC+$qKVq"Hi,DEK(Ghl!ScLVZ22m4'-9[LS[NaGXK`4QBpZ*Er2m3&i2Qh8% -BUCRkm%EIESmT!iREk5IImX#QcR2hI-MCr$l)','lc`Hd2BIm&%Y*`pGp5+CHlc4 -#rd[d!2k+aiE6k&9Lf6aF,#%p-M"h8Y-"FVXF#%[QMV"2rd(l(5"1$!Sic,dMRTV -B50`EX(#qR`cA`S'"!41bJr!UiHT+PGV)C[Ba@)DlD!G%dC+(dE%58P4@8m1!9(@ -fq#)C`$XlD(U%qJrmVBYe61A-DIAm@'m-bP1d+@hRdpjD-JEbKQ+G@,6HflbUb2+ -K6k"UeH*YE`4h"pc9l1eEaT!!&QFB!!#'B8i+5QG)b,`VA&j)KD@P#Ghrj5J0k[U -U#(h@-1Ac!4JFS4[-NSEGP0@((5#G`KpCQ#e"aH*Mf85'DGM@KRb@RfX,+,C1Z%# --@a3(4,8i&8Ue,j!!qZi0I2PAP'dNLCG'dKG%!lMR+kM&JLl@`I3p,m'#[la2TJ& -,5,m9rADfEH$ZbV&$C-l)bK9aC1G23FAbaClUIKp1I+h+AP&k@VjJd8a2+)A4I,H -cB`V5JI8@T8R,Sa6mpNQI0(c2U(k%S)f8NTA"3lHTp($efmaelU[I3*8)m%Sc@QJ -,0kqS@pajpaah,qfM0Te8Ca`M$r[5Y"T(*LH8YIM+UaLZc2bQJZX[%RTS)aSe'9p -3$XIq1I'6*!e!8f*iaRka)S5#6R6$hKFV0#r)`aGG8&KeaMelef&$l4hpkCEXN!0 -SUSq)2`dJ9QX'3ke,k96Ckc,J*pY*mFSadPcU4`8ij&A`R23,1RZ8mel)YdJKmIN -6ILN5L[#$*jbPcl3P4Mqq04FMXcpjp1HdaIIM(6-eAj!!YZle)V"kZ'E3rp!H6Rc -mRBUIU%4(5IFLDbhDlrLcU3XKJ8hb#03p[)cPrQY'qCZ@-i%Kh-9"CShK))@K[Mm -)Jak,hc+*Mjqq$SB--Ac4%HMlK[)T9L"leaSeBhRpCRUaC++0Smb4`F($Q&QJhaa -&*UMrPSaL+hj"5D2L`Uk)He@HN!$M383JCIZJJYQ`f2rm$U@LH*F!9[mQFF%'K"@ -b-fXNkRm`AF3P0d9)jDPdaAU9*8m[1q19Y5VfcQ#!RFaJ1%+2`1Jr3[iTq!+NqXm -85"@PYj4M0$k&8@jji)BlYPJq,VC1KdNA@V+cj`1Kr'A&B*r)*k@1dK1Dac#mebp -[Y,S8B0c55BF-TS0QNVpcjl#mXJ#Fkd0B)QBep251VZ")`54N!NH-+TXD0a*e-S0 -(XpA&dc6mYZlD5TQ&4l4J%N$+hf8SR@C$lR@VrcCSSX,-#"ZhhFLV!ZXJ0iS0p-1 -R+kMd$K@XBB@k)4k'P5)('mE[DUL3!j5XdFiAY90)$VS(al`T@&X3#RCHX))-Y9e -@pRY(J*US1BhXQ8VIYD)MPII@B&MA`YK#afkCGeG-B'S"Bi6G[@kZ,-KP')(0V%i -jE8-GJ*,,QLr[r6!cE-Ymp(2G!QTAr8HKSEiEYQKd0IANCh9$)BE&GVRm+3h[BTX -qaS+jE-0Ar`Jf[JL88`,q@(j#JFiq8fRi06!0rH*2CGqq+b(K*,MR)iq,[lBeLac -R#(N,065TY,BfF2HMRE+L@VKC-Q*15cF!`e[cP-blCS'TI3Hm$BI#Ql9k2#8L"r8 -N5`'3!&@SNY-RP"ejFEFB(JcCAJHTR6qXF#KXd*)%&hcc%pCq,H6)E*VpMi91*5p -Z%al3D&(bPVZhAF*NrFFLbcC-fF`Kc(HZ[8`bcCL&M$FM6+YhE4AUEjKlk@2QLC1 -'JjDcGcKFPXJcU+9YmSJac9IiL8-X',"L8DcGIC!!r+(8bCN0%&3JjNp'F0+&VNd -'$X(+9ei"-1p'pHfI6*GE3dciTG*,3+!VX"EkN!!X%DV`Cm6a8rG1$)4hESr3FM) -Fl0A@d)F1%CDdNG(daP!9i+i%NXRZ,K3Q!KRBGVb8RKLKCB%+KHNQLrke&a$rkS- -$cKFqc%PF6Hh*XHS!f1l!dh$G34f-5Y,*c1L9Z`&'`(,B[JkqfAU3!2"Ri(DMCi' -1X%G[lihQh`0IfX"FIUC1J+T*fXZ5)6EC(4dbdJP``'i"EKk(+b!l45G6S8fjKG2 -PJP,"RjbJGTQKqHZi'2+-1HM@iQcC@65(*H0jeSE[Al8rKQ'M[!M2BA5RNkaHSjR -#q&JYclESZ!(RB"d@pq-b%BPd!NP@TQMaDA2f0mZi%-&NJRI4!VZDZeY#c#jXU0T -Aa5PiJD2hU"[*UbpR'&!-aZ$YUBPLSj4-rXh@DX(F,%qEDN)[YjN4%p!f1XDm!C' -i3D4kV0(9Mm9`[!S-U(kq2GZKQ!VM[`-qVK6&m!&cT22!L#PV)qY4%P6)$Z5!6G9 -BH'I2e,0bSrV(h0J@%rQclMSL8#pp(#RLVaDUYPcc!Hb94P,XUdA3'G&l34,P2ch -$dT3L!A%6[f!rj8[ESH,E9f1Mk(UpG,!fU"29U6`33'UYBfRG3Zc-hjJk3qPH4XJ -DI#86(mfXDLlAYI8DhZ(C'hffVTkJ$rAJhA'@KGmN2V))I0(L*I#SZd6YiaDKa9B -`qBaMH,X4F'AMQIRrH5jU86$"Q4RPF%lppJIrCVT#qCPVYYI(!,`D%""R(BAL)-% -PTQ`4"BcUAmZjj"%[kU&-Gbd,BBCc'&FSr!T23GX&aDPiG0kTIEiPDI(JLT+mf*C -Nlp+jI+*qN44Z$BVH[aBF"-6"EH"8dE8Za*1J5GR*T!,6,2M1Xr*ScX!hMP*KIe6 -GhA8&rkqX``B)"T8jQYqF)A"E@5*abQ&FI#'j(UEFAeQ[V,fH9B)2NeQR&9"&X1e -$mV["88KhZJNZS#3@)B"@DBe+E-FYVPjF3H,IU[q-k5F+b&id,Cepa((Vi6MfKfX -Imck-6lMJ*'9ar"e(`+hbGIU8e,NHJq6#4IhbpG+#Z0ep5L`PTL'keVS2lSF98cp -M9NcNhDcLA`B`&J3B2i'964hL+1HYU$PZ@bJRkP(jGBV-+C(8fTGLF)*IjKTHJ`J -6(1EM%$b23pZiP64r"V5!D63a-jaI4iN"G&l-&)aC5'XmZiAiT$,ca3RZcM#%Xi@ -`VURlq%)@b"HdH`jZQD$PC"#G3XEb%1SLK(8HF+j5DY3lmk+,aV"p#'BLKhpPE65 -F)TS(@G9f#)[%40Rj(39Si,rUHjfi'kIJr$2Yba0bm)!5L9*R#()END,F)6"*8Yl -pAZH!j!PqHiKi6ZhR90I)@b"NLmi0FaZ6r'`2bX8PPL1+2+Rb)'9'[0C$0k%p1RK -QhA+#D3Fe"968N@d'ZNB,iUaH19Y$#%,(*R$!NUmdG9FjjcHEm[)LmkcNbR+lG+! --[c+@q[0I[RaeK!B@icf!M`DH'@d-&IEP%@imH4kSq@qi@5-I4F-$TP-mpj!!Llr -cK-Dj0&Xb+Q[c'M#ISZfEb8)h3kf0Lf+caRh"Jj9Epe!16GhC%i*X!V9Dp-VcLq9 -mr)+JiikYV5"J1P@kBQPTmAI"r#b3!-&"r&*#,ck6Cr4$",@Kc`d4`c!4J9LE3DR -0Cq352U&ph*%U(X+5NllJblTPXdc00NZ1`S2CN@ZZ3F`4qmP@38SPYfHbmAKM2[! -P1Z[deVLjeFSVqIIMUTMf)+fd[r0A@G[T5fF,2BZDP#&e&dTP%2'+'@HZTrJ`b!9 -96hErGUIe,H9KEQ6VNqeY4pfSY##c5"Hr'4YCTEMSS62NAZ)6k@3)@`JqTbfRGec -2JQIX#0GI%-B0Z@-B3RjI4f0Ei9H3!,"`Ah+cLN$6K@LiqVIPL#9*f5-*Z@*CHQ8 -AF3%A4!lLiGlaNUZ88@Y[`lY,kr-TIP$XG1@"6Q-j1S0d%C1C@QA1H9202Pl%XIm -UXBM1,FGHl14H"Sk88rF83a4+hFYBq0QL*G#",bdQ#qNicPr-+T945&e69I2G*de -r3)qdh$JQKE&1d#L#LUUNX%D[DKXYG)IKDm#"f9-4@%p)#3EX2&*6Vm316YGaaY9 -YhJ$a1aAHNMZ)F!XY#+QkFmTarc(a$V3(G)9(GBqF[[2D#iYeh'bE)05,#E+CZ2@ -Gb-k1rF`@)DNfa94Zimce0TQJ2drV3McQEKE`-L3M`fqbIL%X8i3'),clZ5LRd+U -DP-)Gfc'FCbhM+qJb`@5dRBIYaFNpTp$pEC2DKELL6(')MIhdb-2G$FT3e'D2&p0 -DU%34K`)N@DD2X+["ilQrCG2')5NFZKRUF5HD*SIUUZB'S1)P',`jZHIm+[fVHp5 -YKIFJUP5[@(lAaq*EpSUZ(*pUE&hMPRmEqAM0QfQHq8*NfZc)b+@'V83aTK#pG@0 -QqJiaQU`S'Dq)rbprkih8rJ@jZh4PMXlGCQrBRl9&m6DGd+J46#pTrG0P`$&h#Hj -4SM33LEeXYCdN&4"('PlGai8fq4CB4c9Q6['5TFSYZIEFCBI&@qM@4JN33E*m8dX -&qk2)d%&Ka)4+'[r8YN*e(5,4i8rbQEE`FFI3L'TKZ%[mBhdT5eYB9U2X`lP-)Yj -iF[LA!RG[89UZYB,Rf(lf#Lp2M#d)JC1meNSfUbP834+QLp'd,FSZ%jeaEa(lISS -"Zhl&!+qkCb(l(T`$cXP2`eCh@qb1F6Jd91T4+NA6Z[Ye+XG$pBfPDkSi(h3-,E$ -(SCZGY4-GCqDX9UE*1d4bY2aTE$Uj'd$%m(0S@9kdJ$!(eTE4)&GI!CVabj84SHX -j9Qre'G1$QGeZD"F[N!#ZIVH'C%aGTlKGbK[jH%qY(mKmXCF&A0UI2kZ2Y#N0IU+ -PF&+M5k`TqQ*+mC8+$QEJ-F01%GRhaBKZEFEP9m,FF,BPk'4HapFeVEi&hM"m8j! -!FDV#Rb[iVr'Vh-XSXXi'KTpRU(CQ)fF91MMK0ZXF'1,,9B+Mj,D2UGaJQB19Mb% -dAh""T9[""G$B0RVX(Nj"41ll8e"Gq1LN0SC)5C*Dk21Uh)jAfRJC0qD(B[I)l&# -HCArSI69#kL*4&P)T0EUT$cD$DR6SZ5#8c2AC0'D,jpf4R3CLhY*(F5NE0*`a#+9 -Yjh9(4lY3D5X*5856E"H3!#NBY#eH&[jAFR+GkfRX6'eNGXJaU%mLXBb!c$&@mI$ -,K'2SDGU)TJi%E)hLUB+'Mh(@pHGpTpE9AfDL")2'[2PQJ+J4E+JCCZ$4A5UKe3V -H0ZBTh`-*+ZUera'`h*ABa#b5#6ci3F)eK8`XfUN1)[@[h*qYcGh1kelc)44EY'd -JKMDF(dajdAB8N!"piK4cbV$*SP*0P*p(aYZ`2FE5jD++A+kF$(,Rpr@L!d`r354 -C3cR3aY!)F-&k+H@M2E11`abN3,HZ&,TT3j!!Fj(9K([feE*+[-6q#5`Bm&--ZXP -qM!KE0MaGS08d1m*'6k[GA"qFB-iZhl[D!C+9Si)PP"ZDmXPR2+h)dc-a",r6,C[ -E[P+kF4j$*f)h`VfAf1iHlcK%T+fbl1U&U0hkPFR)%a0&G48hphAkpHH65Sf(LFq -QlH"9dJ"QG,($Q04RLM'(BD,6`'E)iRT&GaNSY6TpTH"UaNi24B9`q8NVVae,"lD --%ERIBS29KCdkP8UE4Yb&3q0[XL#*Eq+6P$-&G[NHRBKZEljF,cHlQMef"4(ZU-` -V1E`iUDhJcC!!0*-UI&YkhLV2Q(P)f#6m0X06SAiLFaiQ@L3Y(TKBJ8r8e0!GSh" -Uc203*L8@N!#@VJ"BX4UN#I!IPB3ha62P+lK$-R[Ycqm"Z8C+r0V#DHA5(%`CiM! -C0Nlh8[I(k2Qieq1XcC'6A'(Ve069004iVFmUCQGca-&LUe0&!,NGPlVbTM8Yj2f -Xmk""MI38ebC[TX`lMcjZh!Y"%'FPRGMdD+(IH$dT0[a@@i@G#%Pb+EM9pK"cQ*C -eFKH*[GK5Sr+Hc,+-[+4qT&DB`I'F@`!FiS[TQG[CRYQ8"jaUKI(ee(KBil%E`N* -M@KD9U%)q8*!!(ejjHkAQmQce#%52'XQ!S@2Im+HLA"5Ta2TZf-5%*rlDAK%FEdc -FJcl3Y$2FDHR@qT'LjX5EfqlN)@VI8H$)hkmV!XY#T@!4i'rM(K"N[$)*(+'iHQ$ -8P8*Iei(@cEm!UEC*05SmF3m9Z$KI-Nc[TXQ(T@++(!`dql%h@LRSM%hL"qLZGP, -HV&j0V(CePACM+3$mP!l)jCCA8CHIL[p5&!MeqZYp%GqUI-0-UPI&f)i'T9*lRLr -iE9DqZ)eb@CH2E'XrUabVpK5cAil[VNU50+)M2Slj*MCR,EhX'#XlUZ%6f9b*rp4 -CE',JbLb4U4qQG`V9lP%,caBjcd)Sm)5,2dH1H0&H$$J2[(U(c1AA[+rG09-6RS6 -heDFQ"(h,[!Cq,6)p(BGY93dX-aH(IChCEMVkJlXc89A$*Xf)ekeUXd[CjT`iU01 -6RG,hL(UmD0Sf#BqH1)m(hjqq522[lEH01c'XbLqQI!EMPa@[J[5k%ALFGDkGFNI -2B8[JX!QiN!#L(NLX'EMcIG3MTL6aQ@qZDjL(S$JF!mILr0h5IMm[+q"$fYlCGcY -A(ENd2(mG!a[iT3Q'JJAU1`0'`c4CZA[4T-%C%lUDbd8Ef5NA3BI9fIZiQB(F`!C -9Zc0(lJFH@l!I[eaXL)T,NpJr%8l#hjeGa(L4L%9E`9!%iK4"3M1A@LC`ZZCijZ# -dhp9@DA(E&a!`X+R6THdAak6#ek%B+8J5KE'1VlAArB)4S#h2S[G"#EA&(C4CaI* -U01-)S)lGJATfU2T*A-Y""`GBFbD45JqFp[@)Q$!*&8'1ELdhR6VieRcRUZTT&UZ -T8ZC!Je[8BJf@U%i[pcb"JH9%PLYPbf@EL)+U9Dd0+YA3RRDJ(0PG1L)LN64&!J+ -j*eJHpLE9bhEqE)A9fLShUi*f8GNRQVBT+5XrG"ZC-U0#4BTR)d9#IGS,G`Y(8Sl -FaZH"F'T0FmmIkHrGHjTEBAPD@II1$AaVf0lR4i&'Hi&Iqe0ap84$@Bd[-YVi&@X -#Qr(p-L"5Q+h0!HK#3VJkJII*'!(6J''rM5ffdc[*Jj!!GG8j8m[1[e,6GL(*bXM -q8%4+FJ'EaJ2QZ4iN[3d%T'11CM,SK@0hp0*i'X%qAD,a94aSBF*5KK6DHf[DAd@ -Rjk3"8UCQ,D[fXG5DPC+c,TB339E1ir*BY3j)+Bc!$ZP2-j!!ZfBhf2hB5d@RJ"i -qFFJ4GecEd+ET`c`T2"6`i#q6PLc'3ifZPr4r-XAPf)-hbYcrQ@IBVQP,(CE1#`a -ldTDqQR-)c'HYMQZ0"rTJ"%K#e-A&C(5(l)#SeAT(R5-+(@blY93%KdPKI%)KaV3 -0Z"rYp!Hfl(5e-2biIb-)$STFrB31[(%0`C!!5@!LBeDd%$aF#r%e`JEMaHS9Md' -Vc[L+FGHJ'J+$B+!ScppSbZU#-"H49CVZf-@LKqN'`UlHhQMX2)Q,QKIJQAkA'[` -iJ1H@42Fp$Hp9*!aDeKJACq6f`%5+m4T1-Jp@kY4I*+8qafjQQ3!B0Iii`4lD9#F -Rl(CiBMdmVm!0P2md%FdB&+*,#ai9L"$$fdI`QKL"HX1cCp'mM@--01pN+c8qP$q -kS,99F3@IbJrJNY*2pd3%Ke-[aKQq65V,'$213R+,%QkPbEPVED*`M4,9qm()`A9 -(6-MYDLEYpE(&V%(bp[@NCqceKjBKflcb$mN`4L[-1a6fcKqaL#)Ghd1,b6c#ZiL -Phm,H9I9+m96[F,VP*Q0fcrj-i'#,50A2eIT4ICA"[38RC+V1P'rdIDbN6rrblH' -e`-RLiV3KZ5!Z-AZa@)XI1MBp1L"266jiJH4CVhB*LMjHVfX4X91PU2B'H["&#fJ -G&*K%ka8P-LQ8'&XL-iBKP)I'YH1Q$VH,XE8VBmGV2)$M0)'hY4TjY!QbAX(aBK( -0J0lHm4'h0aj$-[(AG+CBY`AKre$+)X(Ei9q4-KjIBkrGeP9JT&4Gi*aKK!!6P-H -1A0bpUalCXbIRMp4282XRCB@RD34kA#!AAJH$he2&FRdq5ZHjKT5e++jM&'D4kqK -TB@SP,dZfrm@GRK5Q&mFbP9bMS+)4DP-B45$JX9#APcb,l83--0U2NS'eF6haC8[ -jKAS+LrN)'VKL9S-Hr`Ufk#P(m*%"Ximh@MB5UL'[$Ap55a5[))5'MQG-E*3@HMX -JNE"'*+J*pL0Sa`#MR($YpXi`d'e9X9GjNUB9@B40K!-l0d6JHRK+VA$4C3L",+V -C9PXl5Gr,mYB%`5m3fq"UehqCA5YpkI%VTMPdkim$KBb21JbRH"ST)b(,Z)*a63c -Kam,1CMdDYl)kJf5RlRh*RT`KXMi-r+-(9!`('6j[%4@@P"4&(iELGl)bF+&)Z11 -1phZA"Nm1Q6+#d@iPr52SMV8C#*SHD$0`cfddb93`Y0rh!-P2Dir9-i6kA(0P9LV -q1j-HirGlf`GI%Cmfa*ZC(rA%c"[(pZJd+M'-3Y4brR4jH'Z-X-Ae+f9U&*mdJ$J -&K"'&V$D%c)`TG6LSZU[k-A$Vk,#$Xc!)@EUY%jfT3)G8N!#kPKqMEbp2"Y4Nb6J -J13PSK$53!2)a[4mD6(6#GPi8k8Q0(hSDc(5G@K8hmSMeqRFT1%C'e-Dpc6fA[iS -a*b@GqC&hP)bSc'b@bJbD[m`jSMeXTPGF'lTZK4l#HS1D0fZF`P&Bj&hQaPm%1)` -(H6V9c3RjAqG#b9V2G+9[e(Mk`B#c*9N0GLLP5j[rMI,Jm&B&pIL%MBcXcbQJbTF -`iB$M4S$VhZ"4'p3lqKJMN3AH$(mUXiD'Qmh+[[iP@0[Q(YpH!lZAZ9R0UJ*NEL8 -pPT3*dPHNRNT)%ZkV#S[F5$#53`Z*@IqR99DpKDa-IFdDQRi@Br*'X8cCZ*!!)f9 -iJM#JqJpK!!*I'3r2,&'cU4[cB%cd4F,VQ(hXPF84V)&$&ER+4M5kUL%V5(L"G4m --P-aP[iXh6#Ea&$DCHfX9191qeSF!N`HcbXEJ6*e6rL)Bj3f-"bHA4ZZD,lU2DFK -)Uqe(LBde()`mR1%--!%3dMb["V0PAlMElLQ4K!l!3@'E$pA6h'&paR(A0j3%kp& ---qIPPFe,p8(NIMBFb@cNE-*'(U)J@l@6YkHNBj6*U&8-'4-cP@,RmUS3pp"KICX -C8dqR#)2"bPGqm'"0dVZSKT1KY$#Tq%dIRDfA(cp%'G9VRNECEIDFN!!V#0TJJ!" -M2-BLCYG'A9RJ0@I*F,&e@ZBllQfC(R@4D%e6m,A85T3%D!MJJM@GC!VITKV'PbV -G)$3XJ1abCC@6r!-cM85B$GXM50ErLL'6Y!DERkfdTm[X%+k1#e@bLEDM'!LC@@N -BF+DU9-mMARPCAACeI%5iZUm+TCTmRL"9fMfXJHb4[HRE,F5&(F2*"&6Z)$-bf29 -@`GM+Q9he!QY#2S-edMNq89(&qS%1ZLI$36q"Ur,328B0)0-U@"SBP`l4#QI$S0m -BYG58jTQ05[q9Q))Tm&CD*C'I01JTprU%*3@1VmhK%4DUm'jah01P+3VAkfF!QH4 -e&KFb@hPfpa@DVmdE("5m%TIiI!G3["Cl[*5em6QeP"IjL)mBFbLj!%9#8+ERUeA -(E8rLYX5chM'DhjrrR@9fU5ed-A-eHK#8N!!cG@"Hhb1AQpE#m0'K)D[`k`8bq#b -!Gf8hGK$ZU2Q`LI-'r+E3NmE5k-*i+dXkp!!84a$BQG15B891fG0$IcUqK@E4hrE -6+0JimErpiiIKjRme69DM,J`4@r8PfpIp`k0-T,LZ2a5D%%4NJYV,bjTr@34LG8[ -rb2*B[[@#m88klT8[V[3EQDA(9MANKHZFDpIpHQ#8mBLLP5('1a-`RfFp[P#8B8p -N!@(TR`1FN4%$`52f#KILVFJr'qhb#U9rlUD@9kGL3V,@i9+D(%4bbUX@iifrcQj -Y!aGE!2pZ!Ba24ka3SMar[U*CI)K`f'p2D'k2NLUcP!+#T+YB+AHr0@YE*TYqZ3R -TfbNP2f*iJFiph+"8bL!VmmN+0fm!PSbHPNae5*KQ2ha@fqNi!`G23jRD[($e&ii -#el"LeV$9(!khGR-hQPk#ZkrhZ+@cdk8JRD(ke[E1ik1-NJHqXR!,9Z@1M5C8`&I -j(F#CpQ$6`+dMdAe0Fb2(TG3HY4*ZIY2+LPY4Dh-BqPEr0rlMP,X-EB"mecAr()' -@!d(#JXMN@RYeZA@iU``!F6&Bh+1"8"NXFk5CXr5rKNL"MbQBeR+YM3U(aU`lXiH -b0`Cji"&Cjj3pDC4TPpZh5U5j#"H3!%k'2ZBcU@VKDHfreIlaAT+R6Bkqr3KFjm1 -Fh4+1iA1AJ'dp0EhpI&N5lDE2FLUZEm*C5&i1FRYPF#GCefCeDF6S'@K!2`Z5aj8 -r3NE+6)E)KL6TklfR*b[I"SKEFQNI0NYVHZIkAXijY3mi5DIZSaGMELYNY`cK9C! -!E%+9*`+F`ca'Qm#LHZ`c%Q,E,f2@A`Sjrq+`U`Y)rrdAS"!$GS2mVAPc`p0Z,Jl -Jr'@hEPLiDUqY$Umq9IHjVjRF03M68QckK"H0)klL[H+#EG3AJDCe,(XQdJE"eBm -m-e6QVkZ08EhA+F(Nip8+CEp'0kpqY6'VU'Ka6A14*MEY#c%SD@6%jK"LUIYPPd% -'N6XVXAX&!2c#dKihl9aPB'#%BJj$"11D[ePie%clb#92a+VL,CaKaQFKhEp*&E$ -V)+!k2bZ1"19X!CA@BP3VH3NY8)JAehYI'IU3!)BhLhi2[-1RXkMF'cE#0,%eLcc -%08Y@lCTKhCclS"BKcYX(&DTL!-H6MNCZ(b0elQ8KrBXhH`daGd"#TRQ2Ym4$mSL -2Nc[RK)1+8[r@Gj!!b3FaQb[R8kaT0JqhP"3Q26ph"N$ffRFVmPjL"K6fL1-1Pi8 -PQULMqbXIVEki(Q@C@k4@SG8@NA*(C13L@,I$YPZlf%Qr%GaTkK@!I9[YfIH+ULT -lak[C)RIrNC2NaBYBr-,Rl`kRQT`dGJp*LK2EVaaP`GC`"GYr2h[XLBL3!0CQF1K -`VCbjdjN(HL6LmX-Y6-l0DBDiILECrdRZJ8S["mA")e-0,%UqKjU8,U&'3PXmK-k -i!jjMhB2U+ah@L9Bkfm,dkG4jBRi1C)M$B34hlr(rjF1J$e)r$8c!l+6X#TlVh(Z -LT`6rkplh@!#h3V1+'MUZFbR(RA%5K)Gm4cfh8,QD'D'Gr8-KY9ilVjb1LUj8$)$ -0KNqVb(%[!Qr,N!#[5@5U56cN)JA9q#c0%b%,3C2abED1)[S3()B0ZkGl#0lpFZK -9%DG%h`IcVVNei@[*1U9AFAA)Cf0!!PU$9JlE(c,*(9lqV+2hAmUVkY%#Vc-4!hV -QX+fPHTrXVrCNBe9-`b3@SGe5M+fcH$[Y,Q1f!ZlYDZLAGTKq09%Th0f&flf(eR) -SH4-cY2d25LE`Q,"LApM&S'al&X5DU+mjJ%kLbcC'j(Kr-0"&FQ3DR3eF[G9T$C- -P,Q--XPM%QBL6a!XI(+dchT-S(&-`i%h%9*qEqA[[#cqFAMlXF+@rBQ8CGZh[)Be -j$2CTDh"'Qh*MZ6p&QLIB@-q)D&8Qa[%G3&l5@*T,X2$TbQqDLp&Kf([F&S6Dk*j -kBH1kIDYLZdbFRm$SH2V$i4(9rJ[IYfIFQEbU02HB6kBq(N%RBib%Dd$k*C2aKFe -DrHNB2`#5&)Ph4[&Yb+Ebm5k#P4pVkd,l4&#)JbS5#b13!)`d'#[riEX6e+$9XVf -3!+#R&)E@3`&fEBB$ENBThTd*ApDl)N8pc$*`#UUA"LQ#c`[VXYi$A@d!5`$ChS* -'&`1QGDJ4NPYB,pLkdBUapQ'Y51p"ZK6@h""E,IJpS)lh[@,YrXpjRQ-Je%,1'(* -qBHM!6J+Q!440h%2ANkR!A,VVSlNS"h4!H,l+kc1X+D+d@(4,5HD95qP"%+afDF+ -(Y3HANbK%ar!A$Dd!4pErcGaM[1Id`K*@XEfHfp+YZC1ScF4qZpq%148Hi,5U2PZ -1$XEa*)JBkf"bYjp)DR"M)pPd&a9D364V#pKB%XZpTS,)6lIcp"li,U)V4$qU!q* -m!)l(XEDQELmS'2JcPN8der#%QF0Rb5ZiYPka4F)cDNhk)8rFmJTX*DMZDdM)6kc -Z'@h50h,+X`bba4Ql`0Y([N)K!rM0"[PBMb@5mJA6#M8K@[q0)@bMUpMk045m[Qc -+ZdS$RZ!Tf&8EDjYMF5Z('2,DkE5TY#q"`Zhf$c*`r9mbe*b&[X&@*0'eHH5,',j -k2Caf$CcfF1ZU9#((Q"Y5L@m0)`,k6`+P6%afaVV+3K6Gac3I6TCN($iL"1UHJNr -+B%#3!!eCEJd[H1YVSlk`d!&qGf!*Di$lF8MB2[U$(pq&VK$m2"qM1qCADCaS'XE -93j2Y`-m0+H`QU,8j6a9QXlCk+eb*6jmV&-mD["9pE"B$dSRlTjSU0jE$dMC6fr4 -X5&R!"dl$HLV$VYXmi1ZL&+$62G%4q)l5`N+ZRMjE*9lKk[!eT1U[R55eKA%HS4l -Qbd1DlE#(Td"8I"VHcq!fcrL@rGJDS(Maf0l6Z36&Gd382riFFRhZ8clI-lq1-2% -ND#$4H!U4Y3)cZS8Q@r38[83pEU6b9VFk$(kJhamSl+406JYQNi&4cYf,Pmj(1Y" -`8,-JY(0A[qHT05+dFf&@cYJ(ieV)0'(1Ka!alc'iGHUTDSV(p!K6%6RCK(CJEE( -JF(Q6eK3f*kqU9a2[&Zq2aMrjrr1Zr`(1B4U#hp+JmA'DBk5JaqA"UbUT)hHV+Ph -i&BJ9S@VUQD(IfFl+c#MMDD,I)J@%V[8iHJ)#6X(86f%fqqr@Y0"KYI+T31a,L0i -VqK%)$XeB-'AqiNY&KYK$F1e,P4mS[0hQe2FI36`CqfiX,Gf24jhIlqAAP`qm4-E -i"LcrfX*DI8D''B5rU'3'&Pp2bHK+#qRr&LrCBA2%c1jE94qAGQ140Fi#8Lq@)r& -rm(6kJ%Z8++2Ti(3eE4D1Ibqf)E%6D#`V$UhT(2bbQ0DEpYlZX#EBaalYNA+k@`V -%AFi`2fMB"id9T"Gr$C[#(hZUh#RFTF6A-EmJX(E1q(qR8Y&F6QDd8Pp3C(heRi( -Y8J2l'4PdXGal*f9YXdRJ3hqLk0+cFUJHr+eHB"qGhlS*B@$`f40BNlI3XcE)*Q! -@4TUK!hh2f4'KAYi#ei9PFB0#KZXU"@&S0-Ei@m`!26#!UZl'4I"dNehG2rdb[Xl -6%UHEK55)98bR)#S,haTj#B-E)#jHNfS40Fd"6mpBA45c&&b8hYZTYT4R3Fa5pp9 -Yace)L9eT2l)8TjEi)EZURAXSi#+j6p'b'5+X&rTjd!YIMM%BpR)DDK3lTeDfP,- -#PY'THIKG)j!!4*'d#ldpb#S'e+SF1jHNQe!4"-[B1BAJ+X8bbIC6dh41RXE4,GX -bUdMESjG!8jV,YGMLZK!Km#cQXR-haiXH9NpP&"`ATHQp',H5bhe0%D#JHj(3#Gi -(GC'2MIar@TC2bTVr8YHiP,p-Aka'j0J$1lPJ'GXAZT)-@"ZKDqi3YFRY2lQUcNh -`2q,N126Z"DBDf-KJN!#QS(EEJc'&Hf9%Vh&*IK5f+Z*4SK%J6YUB6f@TAlLA6N' -XkKNBNJ58cl!c-")2)hipbZ[jfXKJ%-NSC+fH0DH!P[(Ni(lbL1kYf+"l9H)A$dH -aIXA3Thl+VmEqlUFIN!!GHj0`aN08Ch2-8h-ZkVaGh+G*KJ`P*BKQT8C3Z6B)ieL -[R@d3I%i%cF`KIAIipM+L9UcIiR[IQU12C%N'@D-2FI'@N!$r*+,6qdT$iI$hh&E --Hbi89l(SHdADq9CD0F%PNBpDD%6F1"Vi)U0)KkqZ9ihN9+U$3*!!UT9qCF3D5CF -XSLC%,!Ai5)#FCPDlj(AE+r-641m+YrBRN!"I&2L$DA38iae+hcTq[k86#rEHe@i -R+8THB(N`G0B8#d,9r)j0d1AM9[(1'(Z6%@G5(*[,q&MhpFk*b,k[XTGQicI`Fae -M0@I6)")MlHi#3Ce)0GV,Sfq+rm)`5Zark+!FfF[PIBrAdfjc1j`VGeIXhm!q34D -4Y[ABbhpBbd3+A[YKeHVPNELr6rfr&L[+@!UQ6N)`3$HPER9&DfGJra38m!1SV[% -65',HMSJGE*qT,Y,S&N1iIE@d%)bbq&#eJ+SVd%EGVU8(KMU%C"3&5GhXXImIU3( -2+N'(Q#4&V$%$S@9QG!L`ha%PDa$B,9J#dbqchj!!Tl*!DBqbX[,RDI6'`-edQ)0 -'99XRLjIpEPNG3J1p'cAT`DNU(-E&36$#PY$6N!$Z%b4SqX8cP`DJ)+@%cM[l61- -J(@c&MVZB*XQGb#(`*D5(S42R#EZeN!$Jc6*Td-aj0Z5[TdfL0ai&RafDr%Q2RX' -$kc!Y,efKVXkeai#m&Qb2JJh4[0ACe!#5%hH3!)NFh`VB!K,0q8MSCKTa9"RiD,H -0c)J0K@5MPLqQTer%M&%,M1QRb3P@q%5r3Sj1F,KYG*E-Y@(U`5f-X-qrad0[2(D -l[fBdFeN55H5h%*a%TXkiQaQbc&LZ4L&L`E,Z2RpefEI9,-Ld"Hp+0iJ4dbP'Bea -1Hl&h8HQZ4Ecc1!,D$(qeGdURfX26i-6UF(I90)@831k5XXQ&0(Rp#Bi9,dp,B'E -A*cqYFh@Ge6pB(c`Dj[K3Y4)Y91`GJY8jMa'"""I@qB4mdVfbcp5A2l&6k['@f1S -HS(h+Q$`GCM5P*ZKej+,8(r2@!Be!3E(1HT'[+e@$hFC$+b9&lNXY-(EZi@dppb@ -hcklGK)2S9ZNjBec$+4)YlBiL+GpiHJE!Fb*%pdUbhYVUjHDU`MCCie)D@,FSb%N -YF31hYh(0,rQc&,hR8jk$K`J+'&JA`pi-FQrrlf4dhLM'Y@@LK8d#IQ3SL#hFA#[ -fQRa)cLH6d`S5U@#AS)dPq&(P$QhIQQ!NSJZEA32a8Z*Ah1p@a0X!M68jeqJe+DY -SN8RT4hQ+J%Te4*'Ab(b2Gm'2F61Ap5[kHii8ae4rJQQY#acG&TIBkUZrT6eRB3Z -I1aiP1VM!B$kbrP[hS+A89IN8F"p@)5r-**m!X-h(`LEp!h@J0+dSUPB%aJ4Lbmf -6L4jZJA9JS25%q2LJ3bb@'SU%cZHABK(dJ4A-Zc!FdSA0HNdiV93jYJ$P-ibV@Nh -I'a0Pd("-20,Q1$,2rF,fH)h5MU)2Mcpa*-#2Blm4rD+jlr5mS8(m),+5P2aQ[#N -(0hP#l0b1DbZ`kS6UYHGlhCi%#RD3!%eA-Br9T#e+ZdSKeC-)*kKf(-@0A)`U1J, -&!+Q*82S1DTCTM@NFVc++Y9pjMamj`2r0i((S)rE%ebS6AC8$cjQQGhZddZ0Z6CZ -AiJ9m3G3FXrkcrq0aD2E5pBFC(CC2eQ![N!"HQ@`I6bbjDV0R*QG5HJl-#'NM('+ -G6ah)5QP)8NHY3RZ6EBDfUEed-)+pVZQ)E@TeP5**XG",RkmXeD&[(2c%3b+bGQ3 -#--,JUjBNhJ*S%LH8&*6&6j6BFR(1bZUfZmTiASi0`q`T-f-&8Q2qJTX[C4Y0K6Z -bf0&`qL$i'P2fKB2-@dQC'l3G+9q53BQVLd*0Hm-Y0L2VIAD+lhD8I8qPC00fbh, -""S4hIkNMJ@kRVC+@lVSBV49DEG"G$"QE,PqPf`HR$mBY'b+PHX#B6qH*C3REh!4 -`S`"p,fEqNS-IGkN%KpGXrpbM#IS@'PqSBKY8QhP($NdZHb&VFrKriNQGT-SpFRP -6-B[(8"pqiS1a@a"1JjQKR%d8Ba3@1%hUIqH3!,$GH@P&dj@d'b"1[B$d#RA%l6Z -9EFE28m1F$q(H$MqT3cX-RR`eb)[Q,%p'TQA+#B'MTX2l&XpJ(V'`bK`K2dFkPq) --pfaKbqYBS03,[CJGkPjQqFH9+(kRXV5R"*[(N@%Q9QBr(-I`+@K&dGa-)LP*e[3 -[542)apPTfX3'qYE%DUPRK-,,0"@J(!@Q,j&[2pDZeXaQirPVD+*)U)44#EkGDNc -m[Gj`%006I8k*3C&ZKYlfa$e9mflfXSPcjhaZ1)e$i0mjEUd"e94FLI5-T'L$b-5 -S@pR!dL2d(jcKBN6$rIM-*)J'3-,JQi'mbLd0-p#2Ki-'ATV`S4C&L6cXi0"cjKk -[rYM2%Ylq!"2%qE+K)mr88+18RacH2$84+(!@4+#l$EF'cRN@@EkB@65&YrJ!S3F -+PLN5lfe2e$le09@00BUkdP8MU!$pRLcmdJU8(YPGfrM&)D&EU'YFAc-,Lb$S9jk -FmdlC,-EPNG%30"!CKiCA**-6dqCcm0lU02F46!T!E(#p9eSq0!+h"fB52+S%X2% -&*dD`PE9fkAqc#!,@qAJ,'jE9$k6Uh44L6Mi0&I2@r46A%,'*,l[Zamd@aJEVV+M -%bF(B)L@6p1Cp-P6X(QkUiAVl@i4p4Pca+BT,DqImr3HmSU5jEL5S*NicMViNaBh -3bSFr298T5kcb%,E(CYSFA,#ZP*%c@`3l(RQkiqqr(&)C"NHd1+"#fiA8@p@#J+A -H@`H#KYAL!jpPa,em+a("!S(D-jKSbC(J(#1#d*EZr)d+Hbj$VfI,prqf3HAq051 -,hcIV8mfNX-0"LZlql(3$8aGpcHmN#q'UfT0[c5Il`@#!H3qjK%`('M+q)L&Xi$) -$F0aVHSfI!r[C",rV*#*I(A'ebNR,'mPrDP'CL46b$!Nb0$3'miB!4H$FA@DYG%3 -55Mrr44m)N!"PrJASq-PG'SjF21fj-mm(ppTkfdkN92Qh2GFiA)dTeBjdd6"+J)Q -jSDU!j&d`2#krAU4N[&A5#(D4IA(JM(V[T&@Q#ai`@PV8#ie$r*RclXeSlr3jf25 -M`@K`Vr4$H0bVZ[,RJ!DZ'a(d3Kc9[8@a'A,ZBYAB[EH2%XU'hBPk%4!*%NYEiiL -1Yp)[$S"cB!+BMaPdehFZPmKlI&k`b*ZQiY!5qd-([)m0Xe&-JMNb8AB+c9l5mRG -G#J9*D*p0GRdEUM&$2$LRk!Y(FNm[!1!eB0!3JC1raUDNG[TZh'3frDjLSKN8mhJ -)c3KIP9rqA%8'#N@0&0VI%9+Q00@FRI0FbB9Sq1M+2iH`#Q"9$YL3!#'4U4YM)`J -9UFYFB`e0r#lrL6)SpXT@r*@&c00F[LhiL$CAp'Zi4X%)cX([kIQS5(X6&G(C1$a --MH,9LXZUJJiriDe+Zc`3e54[DMcETD$YZR4")`$qFQB9ejZ#GXZqa'i4JERBe4r -pKYdAkAZ+c'bmG#ZdSeE6jbLi!$`Ddb"QK@FFJ$+q5M2$fj'$diYJ,86QcCF"['f -XDN!r@&l-f*3cN3V`#-d%6A%9IRBeNfSQK&QqQ)5+q8UR2IZ,`FMb%IUlR&'edil -d+PP&L+`dp$2@'S!''(R)Y4ZTFhTC%"0Fk9FLZ[YI*N#K'bb8d"Pc'0Tc,4H$J0! -X)JjQjlQSd*`G&"0*BQYe$"'1P3QbVmeGBqe!UZ#lKSmD@YqIc0V(6i`(2I-+Z14 --NC%@TAFpHP4G-%)3`%G@jEr&VS5TpTXS3CaP+9hpUGj+bCke,M!)#k2iUi*Ef'i -I6fYB*d!P(8C-qVMaVH(G'de8kh!01'fqXI`HhbNl$',r+h+j9cr6"Jc%MTYSPf) -Mmb'p)#bhT%D+N!#2%ZX3#R`[LD9kQbJP1F@f5e+@l2[+12BS-@Z4!BQ3!!@E*hk -J'2K2ppU%N!!FS(8a-AclR+Gp"FFrJqLF9CZS#Di2!L@C(Q'0eI8)[HPpI`Ud'6k -a5bPl'8ZJA)20M6Ue3iIhjNU93Uf9&!-Dcd6VE`IchD4I'mbZa3#J+6'V$D50"eS -J08Nk%Ae&`1@qTiCRbhdm@)1E&S8Me)JL980&"qrF0bG,DHZl9I9,QUYQGc[,-kU -iJ1VmRkD(6Mfj9TV1TJ61ACq$+@A$)MZb94jeP)64(50dR5Vf4CE+19IPp[d26Db -+Z4UPSiV%@CNMEfeXM,&3C0paf)YBmX@P)T,hhJK-#UX`)+kV,U!@)X,qHK**X"6 -(!RTPT*X[#-["0F#AUfb(LqHICELqr%a"%6Jpm$"K,R2kTN#X$ELk1-fd,ShaR+0 -@HrC38*Zek@JIB2MAGcXa2$6MekG"ZhRRZ)ThTl[X3I,JT3d8,05[$2+8K),K!rq -Sa2d%fLdFlP11A"TCD$+b-Xd3rE$[JkEK,KVQ(rp)52fD*`!Dkl#8b1VbSASTiq2 -I@jqp!80A`4AVC"F&rCAr,hVYb6*d2(T%bHNTXA"d&5@JHHbH5Y[dN!#1D1r!UJQ -95Y(V1LVAY2A6d%6YC$L',Jq0*JeNU$D+,N1k9VY)&ZBT&EAmcKr-m2Y-HRFrGlX -clp$C*eDQcPkIEL[qj$BMd9+RjU@(j+qY&E!99A`FePU@B)K'-6CS-YFFFE)bFAG -J03`DfT'1p9Mr2Cj&"dKQYPKC`0YQ8r41L'S+%Ab9c"4!D81LrmFibU`e"i0BCFM --B2TQQ$PbhKLhCriAmf,GFeiKK6,fICkjf")MI[%GMG1e%$Fh8`8`$kYG"ZUYX(M -&ZJ"hQ%Mhm5C%YBL`YrZ!USi662![,2k"UJUL!Ca'-9BD`5kbHJY+GJ(39ZUrmC! -!"dC!#,Hkde$3JqD43p9!E9%fpdFB8q-0*NH1j5HcTZrK,18MBikYeQ)'IJKf`90 -8VNp&F$SGH'6Yk1&(K4+3!2((EbmplfhmUBa6q21G+NDS-+Br8)#ec@3lUV*BRal -P2pkT%+aG`P1jF86qCGR%GCd1PAqVa8SJfqKZjEA`1NZ*Y!KQQ4!FbrdPX%GNGJk -)'@%JRpUHq8c9m85991TS![(V[8,Cr@j!Rf*%'JHNPZ08Lk(S"$GrKEi#&J#c5-9 -"'MDER`Cr,UMKe`mljR$)%Q"E2+'cNqC*0"-r2N2)LMDa[-qM3E002aQ!RJ5$"bN -IJ'r%U%kV9ZD+#,0Sq%@BqlmN*9e@lc%r9I4fC6j11aVC2blEa-M&`R2jlf*04QX -9kEG4fA9i5apS58qePA1I,QNP41*6+G6CbaB$q'*bD`M[R`hB&KFE+k-i#SqYAQL -k+%@B%+6LF[aj8Sc[0F$-CSb-I%MDKiIJ%IDph4F4%qb3!'%'5&(8!"Q"hF+4L'' -X4,20b%&2+$)55Nf*r!%GU'3DGbTZ%Q%f*6j)hZXLf(pU(Xd$+d0K9hikF%kGRl& -XV!dG'-m()1I)T*1%31"pFc-j2eAi4ZS1mr)aGbL,9aqGj[Hec('fR"lPbQF(qSc -S3(dki-3AG"br6H3'Xc-Zk6''fdAfAIIApX'2&lj)fr5M-qBYm9aAl"3D2i",L5r --e1GIl%mk&b*bC#E16fXU%NQF2&%D4V5)L*0S$p$rec[SKM"DZq5Jm2j%0KJHkHZ -MV`A%D`bP+(rT1l('P(p&VGq,4kC8&Jq-6[e"Y61U)@`$CR!d!hU'h(Q*A,jRq5H -0G`Y0[@kDVGi829PQKJck'9F3,-S6r1X*#Z@Vp9Dlh2r3,L6,#Xb90fF`Qpc(a[I -b2Q5E`A#qN6if6&IR-A,K!fbIE88Q-I6a-RqSaiEIX[Tb4"9MBU[3NG!CdX"VEiV -pN!"-j&#a#Ka[N!#-*PX"2ViJ,5d$N!$@2feNh[9(P(!22+mQ(iU"rXmmGJI0TL# -P@5N,-)GA+[,[4-*['-!e#$T$PB*kL&5iEbEc"l#dXXM$j*XjD+'[GrCCrdqIl!q -hNpJJS"#ikEXc4FS"jc)"iFhK5ITe4EkJDG2)S(L[[Fjh*1D+ihJ(!9[$h[VT##G -a*M23,1d0,riF%,U-f@`jdEXbCbkBqqBb("A2l@IjL699*a"ri%H)r93fDdik$c0 -8kJdfmL6k41R5SE'Vk1A'%IRjSbqT"D!'m0Y#bMX(h`FSM&+F`B+JD9T9*NCNi,B -C(-ejbV"'4Ffd@qF0D&a)-PBBGMFq6U3j(f!AF!MMJ9fFPXJ$@(%6-fJmUQcDZm% -Rlf#![JVk*%(&Fe'ZA*k!h1H5J4GH46k!`eDE0Le9K#pDMm,)dR+HG4M2R2hXVJ6 -dXqh(69N#P#6lSKE4(+T"XC6bG9ljQJ"D(@p1e&i($%21#H@93aUAJer)VTNQ+`Z -41$1@MS'DS[CF%-NYNC8llDjEHcaL1m#RNATp@%r*NYV+9a$0+qGkE-EYQ%B&QP! -GShfKdQEE03"6PJdGB1ZMUCff[3CAaJaM"qk`aI&HNp48mdKRhk#`Aa%e0$-&%3f -Ke!"@RAL6ZJkc5QNIQe4HL*Na$BA1#"NKD(QmZXlL#L*E`#ZZr8l-U3"Nqh5NmJ3 -TE8iEBeSXTX"HlJ#1iL1#Gp'Fp)-BfcFdDh%&!M%(28iRDQQpCkF%XTMY&!b[,AA -qVZ3-@@I6@QKU[NXf%'AbTI&&Qq4NbQ6I5R@G@(c63l6I%YlZAUM+jPQrbAAX8jX -hA6IFJ5h3Z9F#QCVTYB@PI&FAH8Vcl5K)Jc,5&6Yl1mVG&pHJUT,i*m4F#)Sh'1k -&@2L&KlXJ-!dJ5!qi8ThpQP$AQ'(e%V*SXj+D+1e1*E2(B@53!)k(8JajG-bd"J5 -"I0,%T%,X`#eqFRVhAUNF0+d3k5JTrhT0Q%IfV%kU$feZ%d5N)1[q2)BZHBEZal5 -ZX9IE'5Zf,)$0Pmma*@kE5$b`XqMEe$+T0S,&4GUSkVH`'IYmS"ma"&(J,Y2J2dQ -5%)J+ah4Q-E"*1[DL$NIekDD9&,d`A5Ur1#J[#Ci+hPL9SaF#rqkIf"$TeH[DGPh -X[%6KHF$#INCh'5X`HRp4TV$2C`9$jEQammIfSl*rMN&!YGK0D+MlBqB#2GM,$N! -Ua,PLS"4FUa!iqZ[Gjb!l`99B'6daZ+eKZ!KckeG`U4f$lPBIB0dAe[5j8E9'#P` -4UHYmH`,393NhUqSM+[[Sacq9!cqeIDQI)fZVZH&MSRQYd)@R"bJPBpa5ijC`9SP -kFR"j"#p3Sldp&DrX8H`SQN12I48UplmkQkBB+15m@Y2#qS'!hKY$RbV)9cU'P## -B-l,b*8QH!l[Fm(6CA*%4hVB9$fL4Airmd`@J9%8T"Ef'(28Hhj&4i,D-qHASe[@ -P'9K`ML"5FJ2,9QDL%[+3!298cdqT@c&UIb`MiK-DkPHaJ8JZ'%&hG18jV4kh[(F -fa5JF$"ERH%b0iKkGbjF)b1#E$k'#iVd&Dm[H`iD`-I8,h4)r6F+pjLREZ[$QI(( -Uk6pdE%Hl"5K#kZ$LVM)#%08(Hl(c)CB(EP4Q`$k-*X(JdX2'-N)arkBcX5m*RpN -D+j%k-0jkYm'eQSkkcR$RJ6bNFP5!K$CSl+!+H8jr"kQXeI3eS)dJ23kA3`JCR4) -,HJlYR8ecIbd-peSdc+%I31cp(Bi$TKK-%q0aapjBFG*h1&)ASG-2P*QJJ2PA6[I -BkFFjk&+0YLRk!0DiiA)kGHk#0U18KU#p3Lll-hrJP"4'8d"$,L9iYXj-PV0(#TD -i@FS,eCqTNRk0H#18PKk1*mliE3cT9'UU9cGcj&i#ZF')68He5Id,`IbA%ideLLL -)30[XMMHZkLU1[eTar@bdZJch3!N@TPE`IQdm5ARMp4QNReZ)MRmGYR-fkGBG+R' -M*q98$EE5H+m!1LGqmLS@*rH)p,4`bUr%)h09BDKZd5T9aH9%@&"4!kE)HQ-(-fK -PiULXmD"3YYGH8dijUFIMZR-4fE9k)YM0H@ccV"I5[)4lJ6RJ#@m+ia(Sf59#EZ# -[[SYE,`j3l+Q"Si)AfAQ&4Fj$1!Vjchd9cHD$b6P%r)%EhD-HpAb5qZ$J&K6Hd%6 -"3ED1PC+QUEHS`&HMQCK04C3AbErjZ!"ad,,C`DiP,+b@m(4i"'iT[R14652p#00 -p[X()lKlpS%D5iA#23Z(iNqX11Y'[DXfi'd4dGA0XX&ZRCT@bqZE3cm9G"9$%-%l -T(Ir#CX[iY9(jS"0"%dc``&ac"SZENJ,8khfY'EU14LL$#%PZM[$c[&E1Pr@Se'A -LQ@ld!GNIhp'1kYhB2XM6IbP`eed,8@cT2M,arXdj#-c,9KZp$pPN`+T$0(a-kZA -&IB#Z1hTGCK'NBNB*qYh0m*dIDea%`!PqD8q@i'CmNHX@'Smcj%J+j1Z0JRhah!h -q8[R[%2bY"VcS%SJYAXP&6dCbCdZHFY'LSrNhkC!!K!Sb%N`m@lEQ4l0N#!PL9PV -ELdk$N6bU@K9AL6AqiR#["c*Q[h1i#Iq1Z[M$Ii1j6V(#&I[85Pl5(e0pU&G8+[3 -2ADSCG4-'"Zr1k6NeXf-AHq(CHS&q*9j''P2R88I*Q$jrXeaZX$+$m[5-Yi5ICf` -+lmJij!+$q'b)1Mh9QL+XY!%+N8ZrSLfLNBeGf"+-('NrY2Zd(a(A28G6S66$VLC -l-,V5iK'deSm+5)[V(@6P-$Mq9K'#J-Yl'%Pa!TZdmQIYV8ZpG3(AS#QM"D3l!1D -9bU@c@1F,-bfa*mCj*%[22Ka3p-,ciY[qP`)$JGL433Gj*ph6dX+F-"M"p@rkChV -c&C9!S&`YQBV3D06j4IXii$PLGFJa8Rb(TmMRM(DrVT8T9KI#!FS)G1qV8&dB@Yc -#"fc-1qDa%+X'),l'U66pBDlj@SUI3bDedCMhI$eV*e#3!#B'riMlKJHhU'Mpl)G -h@j!!KFNR#cH"T9Yqm(&e1MRR)L1erVG,VLd-2-QX$Q4p1QRR,fS[LZ(J%EQ+-Xm -@jNJ$Fp43[,a3UP9DSqCa%Dd5kYaU&@KfC'NQDfVm!JJj3Vc%aFPA3@,%!qeRX1h -2!lZjjrpPR8PDJ@3bYmVUYj5XLq9&m5+-N!$#qU0RNUjca`&ZRZ`8C5*bRC)4Pij -aqX%Y25'*eI6TX@`DHL@V%lFE#H9'Cf5)li"cUEjZLD$T!*63Sc-lmZIlS-%P4KZ -+QY(m8CP32eG4I-A@(@b10pV1L&'4fDKS2UXpUD4QS65#P8P1q%G&)CpRAFrk612 -")8*@1`5KDZHPU)R81$M`(NCh5,Z![R)cl!--MIF!Bkpq$J(#EQF!Uq5rm(82([# -VP9R&hKVCP-1C3LHQ6RYlr+f4`5j080@q!P'KPmJkFYrqeJCpIe-0eL[I#$F'FN, -B`SXB@,TXk88Nma0J*RhiVZ3Yb*SEIrL%VrFh"A)dVPli3$Gcc[rJI-&5lDlNJh2 -#R163@%IR)5*T254(!(195Fj8bmJ[*#iDi'(jf2R9!NFaSV`J[k+NP,bETjK@BVK -2jV)DlqP*qHb5iV+H,r"-JR,FN68F$Fiq0A6GmTP*86q-62*4[*X(aZ5hpEP+8Dj -+2&Vac+Pi!LGb(%4*ad!9JF&VT1S9Ueer1'E4cRpX,DpA#A$Bej'*(Ci$l1L#r1h -dH$3fqIp#iVdCUdpqAUp$,14XY-pXeX+(IYh9SUSF3(0#+!a%MB2FK6C`T!CE%L5 -+M3pBbCfC5JfIRdA64&La,b@YV5Se%)XYPhET#Va8[R*'*8M9C,5"eY)6H)*khq2 -"r0-ZQRkFMi,kI6cm,+r6drjrZq)LTJ`UZJKKH`cN*Gjb0dZGc!0Fh&Jjep4a+Gf -QV8N03YQ0"H4RkM2(X-bKdFJYN5!$9SI3ad43"SKbM'SGj@8H*BBDRVLNrD20C`b -Lh-d')f3KFB8c2"T*ddbVIE[dhD88SmYcqmr!)0@+ZT11`3U1*[r"JL[p$"'BEkS -%,(&N5RV"!ZZV#cdV#ifJpj(9p8E2F[ah`D[QV@i-J+aCG8lZp5`ARDQ-`Y8YmTN -p`8CJbTb%LMZhcC!!llkJPXUqc)'e-8iA"mR)4%c2,XiGbR+K%M*d-cM1P$B%j#4 -9iPfY2k(GMk+rH`DJqQDc1H*!r91QS!iN`k$3bIiR3m2[N!$03ldrF$d[qP(3Hem -c+(1QJSIm3f+$ZD)!$L2#++qJ0U,2&Djqm+T0RIq3!+JZ@!@reXpSd$EN5FE'c06 -'QG[p0QmC'!M*T0p$!1m+Y@'-'TEDhE6IS$`VNLTiFd6qXlZH*HjM&[K@P0L!8f6 -)"l5[8aQ(hKSEi'*XY0YCG3$!kkf0e[p*EU$3-**[b#FCSakE$h4HhQB9V'FY*@f -QiHT,R-fZ(#+LR52!a&"j!AS3@ZmCqY!%1I#[*NN`8cFAJ6*NQJcNEVfMV'E9J*l -bJjcpGX#0XXm)Xf!LkYH1fBh0kIFEeN9SfrQhUqdS%*!!SdHeH%IR+cN,3XKZ+Be -$mD,kmXNd6M!pQ6kV)!4%-Kp5`,kJpGIiT6[KZ0SbC*4p#)+aFXK8f`0"VU4,DTR -TBeR$e)%bJHJTB&@,NKjB"'hhjj5JS@p%,lHpSr&cla58arX#R[I,HKajI1c)B3% -4r923l1'28499&lPLl"#Q[F2H9QkP%fNKPdf+i3ZJ&H3PL@Bk-hJYVa(Mcke9,SJ --lFrG#NIEC#fB%'i(hq"c*JAG)DZ*GTip8*CFl[*SK5Fi,HJq22&HJj9X-2C0,HF -,C,V,MQEQp9K`)afK-JaH"8A6l%,DRaSfJ19qDKd-lp2PcNH2D)D4%@HBTHL0(5Q -$q,EqlVSeF*6BrH90E23))rh*EH-U[Y4%Sb4Xm6ZIcq,US0c5CiP9PCLlEdPqE)P -`iNMNX"m80Qa[CELY%350-SNE1CMa1PPDMh+L+aUa9V+-IRE2if#rZjUa"&")Gda -91CUX[h`C4C9qS+4YZYJea4fIH4*9eC[H&ZUe#N)(014XXQ[k%9D4)h$d39iDp&F -[)BrTaRD1+"l'hTccCQXYd$qrBG()R&i,`1h,+KECEIr1,,JP1XTHG!HA@q`jC6S -KG,%BllVQTekUU[i5T,H@,jKRmq+2CV(Nph&f$ER6b'!k*ieN"9Fl3BECl9JAX+N -NVh5'D*q)Cl8ei[%T4%JlbCd+jr8CAqkS%6NEhhI"FA"VpM9GS*3L+h#"d`1QQk3 -%3hhD!%1cCU[SBR&F4$ZjfUqB8H`d5pY5+LA0"-KEVhZbm+aD*lZ&Cjr0&h#b*BJ -[86cLC1BkGlNMUGihY6FB0Kb1Y)*ME'qdRR(RZ"h!TC!%!3!!2`!3Z#2ElVJMfqi -!!+j%!!%LS`#3!mi!$jCj!!UZXJ!!)LS!N!32!&4V8fKPE'ac,Xq!,RKYE!!!Fm& -849K83eG*43%!rj!%!*!+J!#3"d,"e5(69&&Pl&CI("#rGY*Ph'J)J"49-!5AlYQ -YRqfUGTfD[[`0Ih9'M1kSKZTKU9&4m6)(S4l12`e8HGDS[55#H6$%!P1YjKbYIMb -lb$K&Lm56'MUBc*0VA2Bh5GEJ%XU[JH$48-(Br)K1AUiXZl&!5ZfLReXa,q%3UKU -!PZC[IEYfC(8kSpX-"R51E'XRcXFL`T!!4)ZJTqKj)5(Qq)cG#81(kXeTj$GZ6@l -HEkFJXCkVRBNSkhUYD3K0'`0)f)#@"UffUFkM)C1R&4CiFDUTa3BiiaF`YHk6[Qp -F96V!AfRL5KDfRS@KS%Bik@e909D*$NLM)!2U03R5'Q(6I')4l`ZqC'Xcp6G@)6q -#Jha4,@ak#53DZm%CmiUXY$h-$@UJ!XQ[*QJ$R#qUaPJ-5Mr5I,i)[0HFpm&3cCa -1KEmET,VaLGc)$FdKe1f8AFSG(%IpcJp8dLAc6RRNQ@G&3*Y%qZmb'0,SQC00%$` -`5($3IDSBDH'BU*!!TLrK&)S@Ac$)m0lQE*Zl$YPU+,p&+GM5G`(*J0Ni5AKCdh! -dd9S0ZFHcN!!-&9+0+BLm$)*cA2eVf$2UVl6&'e+Li&1NPBCRU[#Hem+c5[4r[RK -8dUKJmPZb#ZeRfB#`fUAm3#BNcfZAXr)p-6U6J5,Mq4`X+AmM9F@0#TaId6ejY9# -EYpAkS`,6bJM6XT!!j1fpj4Ir%)Z%R@-QG9EP9"k+c#)@`p!+L#E`P'N0i%-KH$& -q1c04N4ZHp24c%6UDpPZ)`IDGdQeim`[fjcF+k0lplY0bcQ'D"XR36Shm8UHjH6` -90+,#%plG%C8qD8PEkR&E-'Q&SBR2hjYSN!$Z"KjImZk6"qjKZl-f58PUD4)mA-q -Z36Pe5C88V4mA`,ce'$JY'EP(B'B*@0`pXhe,`a@d&S)NN6*eSXXXXFKdfN#J2r8 -,IK1P0rF9dGZN%bmF%L&%H"6ESEU2+paUGBXldC!!lp["fY'i&`dR2b!p[$a+MKi -4&Fk"VN1AFrFE0ciI,dKbR"[lGe3*T(i)NS3H%d,'4GprdTPZHG1-MBcb,Pkfjf6 -r@2KU(!R)8KbMT,(3Mrr!m(FZ`9TqNjG'!DPk-V9TTfFDqKIL5k$(R8E8'U65HCk -!!d`I8h&S"*b&kjVTXF1cUeDLlH[dKJB,Cd%cXe5Z-I8JH!Y(Y)T5LQKdacQC+i+ -fqf$PPQ8r#('0B"a&LS0LN6kU#hR-4("200`C)NN+jF#kB*C#3G#pE!,FcFr)['@ -!DiTB5LS,mkf0'Q-'S8Cjr(4D-bmGdBjCeI@&-kpC-krZ1$Z*jqUjfFlHc*E#R!i -0Lj)ADc,`$YT8X)iH$A6SZfiL'A2)SHXUMkF,IhRq(jCVG8adaSeF1["&8R2f-'S -IU1+,CJSf[%Uq!Hk*+kA`'$r*A,E)J)VHSEaqSE[lmq6!MQePUU+2jZ@Rf6I4Iqd -m&FdcZAkJ%-K8&+#kC@b)MVq)[aRM9B#pNZY!,%4!@bD(Dm3h!YHGEJ#-9q%2"j( -93FAr%6bT)i2Ndb@Je+iJ&C*CVY#RSaJh1"6R#`$eSed%Y5pb'cqC[dZH!`6b`[N -,(h$5c8cXr&kS`XK2%Q`1l0@(kR[3XdU#a9#10N%13ihFT#$2LS[@f$35cXlb[GZ -5lIm)j'13!#er0YL(ZiPJ[F2*KQFR0)N,IcYFdmNeRDXMUMG$91I+jVibR$hLD"m -2rPhQSHjpmk!d6ELP*3rZhkVh2,kIX"jUfm3!bcj-d9480bKGi$L%UKM5l(%PEX0 -CIaUdr"IF8mL0"GfjC+F'&FEdQe`RZfb+qJZYaihLa9jiB)X0U,+QVmLrM9TRaad -JiairmlVV,J@(M`PjqSZF8c0@,M[%"(G@F8j+(QhkJUAj!(q8m3jM9XI)3@TL@JA -NUBSdJ@`NC"R1DmdHD[bkcdc$b34`+YHNiAPQ-US9BAk3!&Xr-RkqRcE#')4qVd$ -0LV!c2&bbV%EX1r[QL(DiFR6kSM-ITmrGIY-j*LPXVSrSP-hM+SJBU-T0AB8bX@q -)mfcQCZT4J*PS(r,)![kl`G!#+8'hR"aBIfpKCT4#F-JXI8ljH2-Mjk5f4lq4PD) -N1hMX92RVR#R+(TkN!9BK*MN5)'f'T1eijpU@Rc-PY@RSH1RUb3JR*M$F8CM8pb5 -aYKITqLe[$QJFLHfYqRTYrk)bAZ"3Y[CNjTVNjS#0P4aKq`fXeYr&IiP#i$23&9H -IC-H2CBFqGRbL)jZ1CDU!q2eCK)QIE0%A0)!l`PK)8Ul[&bFYX-,0II-I1*d"ZA% -+R(`#9k)lK-IRP+&TXHY3k*f4GdXcB#,%%SI)63%"K8#RaU-EcZk5j@N&ZN!#XT! -![$"q1DN-BrjJS#3"r93c+UKE24#f&C+6Nh0('VA#lqYVIU4"e4@C3rYi6f0%TTX -ReH5hX-'2'$U[!kj`+)['aIZNZaUfGV@C(E&8F[F$pjPQdF$3Q4I5dR(3FPT`R!k -E4''[SDk*MFeGC#&q"NFUIE(1X1XHZ2A+@l3bRXP3"6&T1FDfE&+R8VUad")EM0Q -c(pLZplMAJ&c5RR(NajjrBH9Y1S(p+XN`-YdiR$bM2MF-Ve25(+$cJi(X(mTA(Ja -*3cqb$cDakMj'ceA*,Am0)ceddSUa+N&r`fjI1dr8'HYb)[%JK&H(h2*&dpeir%i -cj+0cFqd#!Y0P-6`ha(Lk&+ZUB`I$&T%qTP@SB')VV%c&j&dbN!!mCFq&HhbDq6# -YbRMC$m6,-"%,*MZ1h+-&TMMrr'DDhbmrN6mk!+BAa95K*LX)rVkl5l`!(%%8d5' -Lak0BjUJU$MYk`+eA6NA*FEE1D)93+SH#303D`%JS0jp#Ar)@e08m6%,,JSRUSj! -!KMA+R0YLk+f#D)8LQ8q*k'#@-m(aQb8F+Z@b1jk%KQMT9ZBh21&Uj`"I([Dp8a8 -4)9U--HK9Aa"hii"+mPM)V(ZD'M6lQC[4h0lPa4PL3J`#$8,E`l%641%Z-(,l*"1 --,%f`@,CX`I@IaIjCPk'pbCqG(LM@Kh(251!IS4clp$ZCiP*$@9jEj3*YIG9"M"D -IjiAMemS%5'KPYMNZdcHLbNZVFJ)-NkDhI4SZ45((!p$D)"k@"Zh`UHIl"&m0!9G -mZ@KGFbi2h2),`K4k5mN""afF6CXBCk9A)606*Qpb6%Xe*A2YH6&P45qDQP@8dp` -TFRhMh@)[FQY!&QAmkUVVcD@2%"1R'hPYR$ajR[HdPQ&DBj[i+CX&QVd*d@aqh8r -%@Z-Q2RA3,+0aa[4*8frlR!Y#Tr)V3VMSF5T-B(-"Xi[Q'YEYGQckLDbS'UmB3X4 -5(k-9lU,SZM2%XjNa22emRa&hfS2k6&!Q5CCAr(k@D%jpYI)RIYcCLkhK)MKZ#VV -FEe#SePX&I403#`#@,U-[%#(fiSG1#'mZ,,01M'NiB5kDcaj*KPVP[SeNeN9h"a0 -9`E45*0Mcic9@IrCe4ALcY",pCdZEKki98)iPV0aKN!!5'FHl)(m&`L4(+i,LZXL -G&!CR,L&8q0A[rI8D8IiUS%SVLTi*iM)QKdh!fk"D%KaUFiZ2f6+r*F2+A%M$QH` -RIa&2hfSISp5eLq%Z!-qV9!G+3F$5jc92r@i[@Hh0XlNR#Erm)m63H1Gj$6e,[F# -N(P)0Q1kLea"IH*MPKkdD,AfU"Y$LAEPc&CB34r%TlXb`T,"P[MD6mGUBTfHeRX" -'!RiN!QEiG,YfAGFJIdYF&CpLAhFXTAr@8`6TbD[qM&[*[3a26rNI8k@%d&l)(D1 -Cbb6laMhK`3Q#fmrYImV[fVjP#b[rX!0R5DXKa)*K-Mh@C(c1-,Pc"!M%&)0e+'* -VTNMaf)NVB-d&bR1XlH(G,58CL*(HY-iikp!#IAS4Umbq3BjDE9km`[$ZN5$T`$j -05)rZQ0Z6'h#)ZUVAr6bfU5(pMkakV0pYJ4Zd+1!b&h6JM'Q+'E5j5H#Plfd&q9` -(dZ$K14'H(@0X(N5f9Rd&eS54%-(V5I6S6L'"ZCZ#$%JYI@48mNahQ#J38Db8m4` -4EGYMJdeTMCT-Gp-VIkdf$kj`crQ8Iq44KqBESc2GSb0Dc-44cS3&!m@VX984PUR -bLJ8k$RYBdQ9&5RiIT,NXP!RmJA8p$QS@)Z@a[Ui*q1hPjK,'[--(0`LXTbDcbEM -E-UaZVKU0Sh,@)0U)$VFa,Z-A)PPQc*aTP3#Hf-'h!%)R3QER4DmEb(D5MNBq3f4 -8#Q4c$95YH#kDBXZiIq3$[!2GF!dNKhHlfJjdA4M(T),N`&4PF9ENCelj,QicB2R -1k(b[l$Q@%2p(VLl83a1q29)QJ[+#[M@UTjpSRRp-eFVM%X!m%Kb-pXBlam2b%PN -iRpQiYH%`([eHBUTc'S2qC6cS%F[&PJ0!N8)QC!9`iNM1++pGcNC'm,ZIh&EI,&" -eRXlM-SfHUL()T9h8q8j#DP[9XMB#p#rZG285IlYq)1fe*3Papi#Qa#1i3UkP4XQ -f9JCqMP+j-Ym%[9cJ%$biM6U)XGE%mC3ckb6F#FDI,39C1SkYHk5k93+)d4pVTLc -BqBeA5M0c(6Qj%AM-"'J(FDC-1hlp'dELN!#Zr#['N3k9$*R-*4J9IGPGl!+jq1k -iKP54-Pf*4JaqLepA@-RAiZJJp1KpGC@3!2qELj)6VEJmE6l18Z5&i!J18rME2X4 -a[G%UI,&J!&cp6H[m[A5H&[H4%,MeI'GT9[lSe98)$LfdN!!E3!CrCMGh#bEq[p) -Jl[Tj[i)L6,CP&!plBP#SX&C3@hrrf%IQV5i$IFC,$i($eDR#p,ja8"-9lhdPSam -FIP`YG4p4N[EJ5kFN6T*QCJ9UE@r,ZiDGmkprZ6fV[c0hY6NIih`9'@Z%(@5[6h& -Ndem4H3hiDi(1e,$Q@QdF%+FVT%m,VIK)Ic'S'SXjAm%l$I2B&@eQNQ)ZdRVVh54 -0YkQ&P8[Di0bS&MGN0UeqB*!![k9qhFiM0##$cq9kTZ)BiJ+T9l51'8I8LQAE%$r -[mPNjlDDk$M%(eM4U)Qi4Bdfc-pY0C,C*+hXh[E'FiEDS2Ifiq[VF@(SGcIck8iJ -pMBDEF&6%fCXhfE[jV[c84"ajFpc#URVRc4)m8if"N!!IIHXM'LTp[$UJE"VPFCR -%h!HTVk"%6[a9X9(PBP%)Rq+-&Xp&FT!!k`Ek6hA+b[P@%C[kCUc1d6r`eK''(al -r*CdiJJa1[`,R[8&Z%*Yjlb`q*l-rb'4`mlbbelCTL*!!aM--ZKlDpFlf6pbG`dB -M#T9%)NIqY3DNRa4Q5MP!V%1#i%6)J)F-qN#2H&pUKHd,'"$"$M6lU3Qd8PbbN!$ -jiHcP5L((qRh8RKl0Ifi*0q+9YD52cEGaJA[KR2P[4mhL5)8feKNr#0iZIR*ITH( -,f)Z1FVJV2G[GTMLP41V8aSYR96L`2+4KK%4(6+e6Zpcl5[(1RQNj$L4GVQi%Fk` -U)&b+F`4c5MJrmLecah)DA,1L,43rE!#&"4G'1ajD9@cqj0RkBYbU#$m8+fmjm[R -A)&q(C"#B1qG99RHC)5fM!L53!$61(DA8[$+8PG"*IHlNAG+DZ@8rde`BhpHCZaQ -9lIl&p9b98PeNMSJ2lS`UAJ"kP1rIFFhIjcdpprRh@@!$[Z`YDUXJ@EV"8M2P5-h -rf#3#a[Yha3*+9McmA#1M'INNeKkj9`0(ZZ$I'(m-YA*j-MD5LQEXh2lF@XbS[-& -aXrB%4hNMV[JVE0U8mR'`N!"C+a+6V9hKBJDA!ZK!pI64@@2SAE-CrIa+V(%FUrD -qj`KF@RdkbMi*K*6F''hS2EqjV-YL&CPfr@CDj+A$Df!R((SUA3@j6RY3K21#EG$ -,Z%GA[TUrBGR'blS@-0PaC3!bP!KHNJa*8**T2UYq)qR&8mSE4!aYXCbCVfj5phQ -d'bl@N`(J!NGTYl@q0P3a-@qZA)GrEmqk[3G1)*42d0kXkmmlD,DHVR4A*NDfAfd -!eRceUp4rkZ1$dII5D2*krJMYLZreh521*-Fd("0VAA8I@D3pQhI%Kpr9(aJP(e2 -#%BGPVe!Q3e)@+0TFV[ZA4S1HM@8M1qCf@E+@b98%f$,*6dQlG59m6Pam!H8BfrS -Dc#YLcPK9Cb1LHl0j4VRkTHGDG)e(BVF,X9M+8VkSEU5U#aG-,b46P$Na+STq*pL -ICmC2ZCDaFrlrX3dX9Aj$$ZZ5dT1rT$9Z!K,T,f9-hclQbb2$&!'I"CK)XIFmpbU -XB3Na-6R4eh5-(A`AIe1bTA4#ENrQUlp3LrD8NTl-4fq9QUA5[I'd'[iQj-KS!bX -qRfDE,E%PX4cmC0X%555hB25-P+HbbLZVKp*H-plT##CdENlA%k*hBVXH)pcH%#C -+c+Rcci'q#N)C!,j8mQ[6aPIm-+H8N!#kCG&a9GT(2YD9&L5522(pQ"Bjh!r&14' -)m&l3F)-U*BNm8fBjKURYZYa9EabCBLXNfY5GC'Q$dSZHhHpmLfl4!D49"6JAM*K -Sb!9-!5NBBZEI!+eY5+2pjpY38malrjrZCaLQ5&AMa!d,mf4[+fRX@J"TMVE+kFi -[AePTfQ@aAYdX!6c4hpqFM$1HF-il`@-f(p`q`40dcNR0N3dDe%IGF'BS6[l"Bqe -c#Ja6S('`Yl8b[RNIbMaHe"SP#9XYa'$$GG5+B4P`(X1,6C+%BG4XbcHpEMjLZjE -'qF6j)8!(Z5%&eQbIIMCYST*&40CX5ajIMLD+M1,FQT`01L"kQ-!LX8TL9h'5-*D -K0TSAIMJih09QkLdBV@Rh!eq9+4hZDS+B8rRdNk[$'BlNj&a#h(r-4(i&@lIUGmH -SjUYcElC11I`E2cS$#'lPB`h'@Rp&3J5&MAY6E(-cG+rVbT+DeZr[80Nc$P39'"I -&e"$R!`XFp@Q@[Pfd82(%`I1P4EkD2pIDBiD6M#MqCbT(Xea5+F0jT&LDaHYQL9c -mdD!P@8BM8!B$3YPJj5HU+,-EV2Zl)M&f-0hTPVdrKa8`dPRe#*TU+UahU`B'2V' -cmIRpb2)rri8N1U-Vc+`N&!#T#5JHh'N3ZXHM5*4QQp,&TlFk6#ece%[#4,-Z!1X -lLQ,Nbd53!%p2jepC%$1mZRT8IEU&E*p2p0p)hNr@fCk*j&#RQR8hG!KpJbEUH9e -9DIqai,[H0[0hf(SGS83+r+QCjZTIJGY#Xl8Q*6+G9''4`4Yh%5jD'Sd!5%T@1qC -BfVql-e[5[D*e'a[R02R*Lh@T3"4M)1"VePRPk4GrFjMI`5U(`"SRCdTqbmQcEmJ -qeN[RK*q[*2Fq[4MN[qa6kDf9qHPRc,E5p3mrN4)SU8NC-V6PA%NqDMq8a2M`*rV -0TI%0&a4A#AU$,HQhh0krff5+FBf'ePNPlb1jfbK!E&m)FSNGDCc88fi8[VJqArD -$aaU$RC!![bJe!F0A4,C22KcLMDiF4bP-iQMNE9#fZV@R!X8I)@J-mBc@bSLrr&+ -+[S'k`$UKARFE3PhH5R1JTP%QS&iVG)Afp,E9&c'2MiPRrBKprM`9c65Xqf&dBEX -)pZdcTjCD@0Sh"Qbe+44VjX1dI#T,'pEJPpM[+%4jPN%IS8A9`PG$P5lp0["+!0A -)ZC4[&IJb4jb4KTQ#3L@,(Sc9,iqdA)rHb%G"$1M'*VFR3bUa#U3R("hGMD9&DJC --H+1pV%l3*VZ9G'qcAA9HaQp`qSd5k%cTDHLC99GmR%j)"M5Sm%D[dalH+bEK2j6 -4h!)jU8[imq+p08K[LS6je#bh'Fm#FDbk4[JTDaP3h)$$CfT0B5FSRj%f3(GbVjh -!`JPlRm"0GbQ&3iRh1QkY"kD0$9EPJr6bNMU-5VhS+VGir,@3!1TFTZrN+9X-p6( -'!VH'0!mEik*a&I&h&B%IAYX3m+Z8!!hLm!HV$B@Q,1,GHi*T2+fTlL)5EjK8L6K -k3&)LCTJN-"`1)'Ph'ReIZUJ!3b[5f'P,Qq[dE5rp!mer6c+%PejdYCL(lD*&EMk -EG03#"k2UC""V'N@B@P@q3Naa4pRFQ6+(d*Pi4#3"h"N-R'(ZUB@DVa4m#X*a*L( -M[ELF1*SYN!$eMGp1F8*K81&r*0S(6SrGVK&X%Y[jeL(4cDf"D9`[mDaH+PCGDXP -d2Vf+)jJ`-f,E3bDbXh6Y`*I24Nl$ZACP(YURRLJ6F26dhAQhC2Lbp$c4R259Yrf -ZmGDUf#U-EPhm+iN'9Xa(+bJA%r`U-N)ieJmCPifmh"!hY)[0hkF%p9[01[[P31# -0h3GYS"VbKGGb%8Z("CbYjA8%cBJ9HRpT*b`kkf,3*LT8[KrbSb(6`UIXV#p&1Rd -XU85Q9qV@P`crGi1S5ZckPYJrDM*GIcKF3)@Pjd10`1C@V$0caIK@6*!!Z&,[%%+ -&DND4NBAZbGlU)[JKPYmlkP%ae1'V%Yjd*6i1'F@2N8[S2$NDLV+c9Hf)('AH1(Z -6cU0lbNVlIed2U["jSr!4jFFjB+9'[aC*kiF,225cf5I`I&08cFe@HlD4Fqe%&R( -(3-Rkh(G5(m5SEKFAE0XUNffUMm1+K&UE4S"UTYVcY1R%KahYe2AfrZ`rl[K(*AG -,PEBJjffMH`'[`UH&IPd[2SMq1[-(m8NE4E&&'%ADeB1b*PdUhf`KY,d%#BI"GiT -hUG)NT8EqQ0cllF$HC4Ulqk%ZhFN"RlAULMd8UQAUSL!LjPITV%&N`0j6q8ZCP0m -4cqC6Trf!SQ"Xi,aP22dKPdM!,*Sq"8XUqm1N&`0FNPpl'k`LHLmGMkMi2fQc,q$ -+BM+IZNPcJCGN4(iFLB@YQq(dp5hp%X8-pp)1%#F&"iJFP0k4c&jEQ*f0fm1Sfem -EpCd-p[mFBl@hG$rl`lA6fUBf9KYpq2%(,VqB4a8Ye!A6PbScj(GIipQ1'ARl*b# -!PPT%Q,2JM$0%U6'$r1DAcMFiRRfN"Fm%Ih[Pk8eM5ercmUiBI`X`9r0Tq30d%G0 -Km+fH0$bFIJ++HNKMq0[ejS,paT4-mkDC1kGp68RlCi'5Eafbi(`YEI"9e6T#+4D -+KYSN3-Yk8c"*Bc8$[S32,8&P(-TDS@L,qH-!`-j@SESi+*d#"rIib(`G1!hc3GK -4TUpJ!cX9XeA)me4i[[5&&CF(kkA(elPplPjU,T[qY2k*3*VRCU!F+m*[3G"'3J3 -(kP0h0Xjk1erY*RBk%Ra!([dCL%8r@em3&(9lAZX#6-q1U',T8C3d4EY!EAS(MGb -G'BTGhE6$0Tfp(2mJ%0164HEXN!#N+IaCZ26K`ebI[A2hPXqLpCV5BLVBf,'J(X8 -'4EI(ZV"aqj8jjiBlHJ+9[BX"-pCm4ePLmA6#6k$`a8Th+k`F-D-F[5YUb9FHdRI -#JKX[ZaN'BHcY))BBebC$Y8FcT,QIc,df(-m*&(dD4#hEd*fiH%qBaK8er53S1dB -`d'pf%`Ga2S$j+cRQH36TfBaBf2U0SYc"-`*4U0ik$KAQ"id`G#CqBQDll18%XpM -DP!J,MEiVS+dkNrkRYmhMXM@MGErPjld39U`Y$@UmS8K"GaTQL3T0e+ek`GQG-5@ --N6pj'E&)mI1G)Q1L3C61mXH8#f-%ma0pX63"jFZ9FKrk1D*BB5[Y3MmdFc'XlM' -$)ff'm9R6N!!`bS9m9`$D3IIp,9K5PNa5V"KIj@`jqA)EfCjk6lY2#9f@$hM@FB- -Kf'jF+R8Z-6Y2alAS62mZ#)MLT,pk2)brlL9dNjGlT1E)8LlX40H!ZRf@&jM)22, --BaL3!&DfF3A`iE$-eMKcd1VYLrqjiIbNiqhQ3@`@(9RFNiFa2MY4mPPQ2GDSk2' -M5!$Cc#bNJ(Hi`U-'-eYeHm0$(f0VVm+QDHYRr'J2,199GmDY3-N(*N3fC#Z"-TB -)pqNf6Zd%(I3i0k%fE%J1e+C%Xq1L-G*NbPi"DMS2[-HM(C)1T("*PBcE63%V&p! -IB[4@82R4Up,$1LTC+k1car@f)"db,d@[NYMibKLGmfLQj(iS`5E@,q[9%PFVHM( -RR'Gle$JBDH,Be",3IkCK9FpdQ0)6`Cq-6BVjeZka*qAYH,5dpD,B8Y[IpYbZk++ -JUIB`&%,8ScUl%(Y3"ShFE[20*J2FL+PbZ!qm)eB8mf#4,SR(Laq6-hS0f-@fFr( -bBXMmY!j6V`#8"`TK0c`@VVk)-MkreLc`)f9dcjP)i1lEkYXVCYRpZ+C5X"R%A!H -TUp6)E0GG-#AZ8jA8G34[djMT[6IJ-e"##DQ1b&lZ*AV$Y"JhdU'ArhL4N`LAQ)b -4E,FdBK*edS1j%+qKUkm*Zi2IDF)L'i$B1#!4S&lqU@Lbl6EFT0,&"PPl$mK'lNI -e"a02,Ba4PFV5a)rkC)+0bfHfm5pkkYLC2'p)l9fAM%Xl@H[j[YJm1JeQaT1Yk5j -l2M8*DUY+Y(QMj$i(UKC%0,#J(b8H-kI,i8TjY6S&5)&GqeM"5%q+V"RXiC6NbhG -h%iNjAFej$%Vd&KrcZpRi)&`'UADKfCq41#RLfZfHl"D[U3'J0&R26GFHHAJ*$,S -mQ"'Ce2L0*DZkKLe+29A&N`MfCQ,@im@C8XfI)jhq,P!8CUX3")P2GN!Ud86pfLr -8mS&-bLMSbj8m*H9Nj4HpX(,lmMhI8#GDZ@UqcheVb*N#KABA+Hr4ch(eYRU@QQ[ -KYdVda90ahaS@P5,M*$%h)rJCVa#%"01B,"Eq@aMNTj8MjQc!'L@ej%lP'"bA9m" -m3A+$rU)1ji#)M&QM*k`30',LEXa"$#$D55&VES6fK00bc!X-ZK%$VG)jQVmX&Ad -+[(`L!XM4eLPm60IJTCI@r,#d-G,58DPKQ1*J-9r@4Drc[P+N#iHEf)Cp(R0fV2& -qEVYdNZ,6,X,$!,BV9#r2ia*PHMVZ@be9JC,%,6h!B+(HG,"TM'(kT2B"BXBh4P1 -p9)1V,l1qp3Q55RN88j&A3URT[MXDj84Ceck[mV1-@e4pVbqU4$'Dr4E3Va%KBYi -Uk1F"9SiJBljLUh#lhAijQ`'#+3@%QF+ARjRYI@l8i2T9'm%@Hck"CY)09H!@lG2 -94qqBI9UhSlhPCff+I+I@Q(S"BGi2ZFCK06$(R(Q@[TIX@d&BEmS-E)K$$B&SS2# -B!aDB[6U4B@e[EcajQAicaKbZ&f3K*r0%L+$JKN5*(0JLb-[HMpBk4b*Eaq5N+Hf -q6R5)Bi[V8!8%#8I9ikV&8!+NTE%!LTF2VY5UPj!!*6pJ[DVk3`('NYJ,bSSL1h2 -blrJ`q@RTL(-$BH-"a0L)ch*f0a&3pUZ5EQ0)3kM(hPU#ia)9BAFCT9j6,8M!M%b -[)SI%A88lKaLle[C5'$#ImBB'X4-lMBKH4$cDZ`QcdIJRa6JJANfKVG!ckIeh%N` -R1Vm"0TmFp9!9K6i#M*dLRhA4rAk9V`PXIGcfG-4qN!"6lLm5`5k26%JJM-0f6YH -(ba[!8FC-KFhP$S'C3VG0aTKFhT!!#k#j`cbZXDY3-4QqaL["b6*)$&&`N!"fYl2 -@B)VmC8&#d965SqmLiLDaf()bj)'lNCLeK*M!5l*q3eTN3rMm,3N99*Z0p8Mm$AL -Z,cTNb0MA,4-34mhE8qi&1F[4kb%Tr'E%$-V`Ud52f(m$2TD)*kEbE&@6Ep6C',D -BYVXFaFMl!+HC1ai"KprbGTqVah0eXJ,c2"C$Sf%8iMC"@4ihFD"qPalR!6UUR&1 -khA$K&@MK%0cG,A2!N!$VVTRY'KU-L`N%'8mlXhkb9DMhSf!c#N4@NFR9"0ZVJ3i -QVYUV#KjVCLfi4[aBRAZc(,qcLfIY'e#T$KC$B`Qj$i+rI$'[a(+mZ8XSi2ZFLUZ -hf))6D3R%H`dV[K9K'A`RGd#PN!3"!!!`!%!!N!N"!"B!N!I1!!"4@Iq3"!#3#U@ -3"!%!!$8!!,Ea6[1fm8lc!*!$cJ!")lS!N!0b!!9&@`#3$NPMEfi0!!%5,@PMEfj -038063!#3$i!!N!N"jJ#3!i!!N!32!%,"e1([a#"i(T,V1b+63jBp6KE&40bkJ6- -15jfD#UKj(*k(jm"JiedH0VMYC24mX`HVe+GMeF+dQmZ$01k[6XH0K4dq8mdCCkB -T6YB8X60cfjDl4FpQHiI,ZRhD$mE*L4*AjH@8Sa([GeP4F4lYQSHRkQ1Y`b))1"i -N"5,R8eJ!TC!%!3!!-!"!!*!*!5,6!*!(FJ!!Nh6rN!3!N!T[1!!!!3!!!D1+!!' -LLJ!!"8X!N2--!#!!#!#L!4`!J&99!*!$$!!S!#J!VJ&1!,9993#3!``!)!!)!+) -"(!##998!N!--!')!NJ$`!CJ!K999!*!$$!"'!+B!ZJ(@!)C993#3!``!+!!S!(8 -"2!#(998!N!-1!#J!+!$#!D3!L&99+!S!N!--!#J!+!#8!4)#!&99!*!$$!!S!#J -!M3%A!J&993#3!``!+!!S!,B"(!3"998!N!0D!!%!N!9G!(!!F3#X"!*25`#3"dS -!93%6L$T6Eh*bH5iJ)%PZFh4KE'aKG'P[EL"MB@iJEfjXH5"LC5"`CA*QEh*YC@3 -JEfiJ5%C6)(C[E(9YCA-Z!*!$@J!"!*!&A3"`!(%!V!3#6dX!N!G+!&8"%iJk9'K -P)'CTE'8JdPi`db"YBANJBQ8JC'&YB@GPC#iJ)&"XC@&cC5"eFf8JDA3JGfPdD#" -MBA9dD@pZ,J#3!e)!!3#3"@d!CJ#"!+)%!Np,!*!&"!")!'F"!iJb8fpbFRNX)'* -eG#"K)'4TFfXJFQ9XBA4PC#"PFR*[FL!SAM!T)'KKFb"[Bf0eFR*PC#i!N!0p384 -$8J-!!(i08`U6K!'ME3$X#h)$Y,)b+b[M@dhH@qpUpkCZ*YH!-3"!!`#3!lUe$)! -!#@NUrZ!"94)XqdV)@`lMjA1kK9'1XMr2MrqZ)$NhV"Vi%FU'0AQ'BU0RDr#XAMm -&lZ`,`,#T"L)i6&Fq[H[,VD-C!m8F@8XE1!X!N!0-!!)!N!8a!'F!43#Y"!44G@P -d!*!&#J"3!"`"%)JD9@j6G(9QCQPZCb"hBA-JFh9MBf9cFfCeE#%!N!8)!!i!+!! -ZS!)!!3#3!p4"4%05!`!"%Je6#TXN!$Z+L)S9caE3Fka%E"$e,$pr2qcARErRlXi --TeMBB58U@)999@,P[r%%XDS&#l*P1diJqC!!(`&8**Mk0Eb&Tph&fGe0dXKkNVe -p(bj$h-@Aak8,&[Q01&G2PI8,*$a+MT*"[ZKdYI"dDK@D)Mi&jNl(,(@,TA1"CHp -m&"bi0FV-TR9!6`FK$%aAP&QFVF'lCA-L&paq$(JIm$a!SNrM'Ub)p-`20hNS80Z --b('VTjc&BeY4ZFc0eZQ"Uj3hhmRl$1Rr92r*E3#3"'i!!3#3"@J!HJ"m!,B%!Np -,!*!(5!"H!5@)6P0[E@8JDA4PEA-JGf9bC5"cDfP`F'9N)'*PBf&eFf8JG'KPH5" -KFQ8JEQpd)(0eF("[FR4PC#"LH5"dD'Pc)(0PE'BYCAKdFQ&MG'pb,J#3!kP"4%0 -5!`!!YJe6#U-#!ZrN"*hp8l%2ccCldpY8G0M(R)VSe!Q+HRCclXET1"!2&6YXCe8 -*9P@3!b(HE41VqJ%,NJpJLErjN!!"IXTN0pFP'NhFXXeN0%iKA-1K3f`f6F6Y%d@ -+CqJd-B%kIc8'8cl'BkDNN[dmr5K3rf[-JcXqPd"rAJ@qC[AL9b'HI%[ErHjf82f -*dc00USVP-@0*@#ld!T-Q34*[(afX!J#3!cS!!3#3"9!!@3"N!*-%!Np,!*!&!`" -%!%J!k)JC9'KTFb"KFQ0SDACP)'Pc)'4KE@&RC@3Z)!#3"%J!!3#3"8F!@J"E!*3 -%!Np,!*!&!J"&!$%!k)JR@@pe)'KKGQ8JC@jdCA*PC#"KEL"TEQ0[FR*PBh3JF'& -cFhG[FQ3Z!*!%+!!"!*!&UJ#%!,i!h!3)3fpZG'PZG@8!N!8%!!3!SJ&L`!)$k!# -3!h`!!3#3"@N!B`"p!*m%!Np,!*!(23"J!21)A&4SCA*P)'Pc)'j[G#"PEQpeCfJ -JFQp[E5"[EL$5AM$6)(4[)'0[ER4TER9P)&9Z8h4eCQCTEQFZ)#""EL"KC'4TG'P -[EQ&X)&ia)'*jG'9c)'&bC5"ZC@9NC@3Z!*!$(J"Z!)B!hJ(N!!8!N!J""3C6G'& -dGA-!N!BB!$3!&!$m!AS!!3%!!3#3"32S!*!$P!!!!4p"4%05!`!%jJe6#Z3L!0p -f!ijaTdl&mUcH4,(Q2,#(q+cH9#bRS)Kh8fIe-m%!(3BLcP*d9JmlV2,rhrHH(0l -ClA4B!JZJSh!C1CSEIBc9-`eYXf"Ff#fYQQ'1,jP&KSEYjm6pGcSAFZkN#TXV,[2 -qG)1bS4Qe!@`Z(5aUJ)P9k@!e1(J5!34(NB2(LB1,(03eclf$l3L`iF+X%J6F'S0 -JXl6il#@GkD58+,c`852HDVRR[`kmdL4l)`0+SX-VH`PN#LR5[Prekb$B0H1"HRl -Sb-b0H$[Lm'Y,QFJ8JNX+D&I&*,8a6r(j0cd$)jiaM1pda%d1,6c8J$XCIc6R(cV -q1QXMZ3b5Gj+JfBF@rQV*&dhfI-"IFkGepNBLP"U2&J!!"`T"4%05!`!-+!jG#kb -#*$lU$0r[lMJ*S8U(8"UT8H%%4d"jA`GQmk$CJS396f3i9T6&AQdmXj+5fTjY@'X -lmI[U3fJYC+e#"@Y1,T!!K!PlLpp[GI`qaIAlb-+J@E@NcZ`ZY40E&*)`,mQbT%Z -&%0,h1lh[a1,DFq[h"`hRjc3a!53d)c8I4Z31T3kNrfV)cfB)`E"CDAMH[$jm`Eh -R45H,`KpKrA+I2!Tf$"FqLC@*(Uk$BF5(K)QYSFSSU$L!H&mN#)-cK1H"L2N3'6Y -3bQk`+kPpM0MZ-2d6L91I[hfmJIfmqZj`[2rfCi2MVZ)rfm!hBF98HDNqhlQ5[@N -NcfG2*mq%PCmZKV,&30d!E*Nmi2Q&q#FhMHQ&iZQ(CmB$c0lDEFAR$E![5(&K*Xl -cR3X3E(iK'iRPNJXTImKA*!1$VCElqHr0a$19pHPi+$+FZc'b1,MT+Rp6+f*P&2i -&IAXASS&Qpm)&fid25YMA+1a'aNrQF4)CK$q*5pXH#[M1AJ-[LK(UcI!caDX#EP' -['B8h-8FL$H-6mEPR95lQe8qIR"PbRq3q(YjYi"ZANZ1jBMC9PTiVG[LPV9qF6mU -qf[2ET56hblPYb`4m9-'[H#Ml5L@m(VN@JXa3(i0EGcYL"VkdEc`jqF2jd'TjlVN -C61[pUBTqkSG4q!rmV"@`ANGK&a)L9,bFRJ5"$N)bpqJ#(85Ld!fVi'+bQ1GP-EF -SLrU2C"(RC#%S9*431)3++GbQkN@U9+AE!dqcj23V-9P'qjbm,*QrjKKC5UrRNV* -FIVhRX5aVhSRZ-M!rVM!`T6pd',c)l(!B")hq4$$i)$I9+Kr'#rIqa)0Dkr$Lb&p -@l["+'bE$-%Q'b60-ULlC"Vr"@f`@"MiYi[LiX![AZcA8ThZaI%12UYeN6B'P4p5 -ATP%rD,851XZ(kJUZ6'pJ5@mji#J9,PpBZk!f(&dc)qPZH0'%I+L9f$k)`3lDeXb -08lTE`%P!9MEJqaDhPZkP#!kD[U)#mG$A3$*(lA!13(#D)QUEh4a$,E6LNG%-lKP -!X'+-ELY"0'I'6JrKeNV6Ij-2N6!$$Ym4V`l4(1Rl9r5$CE9*V-L-L+3pUQA8MGS -qf*T$B3djmSU(YILq*'jjFekp$jY9ElbKfi6qi85e!p9IHmc5Hi*F6*QNUPbr,TX -UZAM43D@H"Q1[rmT"2-Lq3$Id&S%1jP1LFc(Q9)HTSi+MrcmB(H,A`i*6CHpGqFI -*(D23QV[h2p!+qJ11M5Z&rKV5e(CS&-LR+'aJe+Qqp2h-p+%2"4r1LL"8,9hPrV* -2lH[lP(,eBX!TI)hdhLRYc"ae)ZZGfR'!D"DIQp@1$DY!$J"aIi2HNGPT"3[D"S" -RMc@E3FN%6JpTYpf[1*'MS-AT*L-ZRqS9UAD4HJfRf(X@lFrZbj!!N@R,5i0fYq, -UqmTRm%&Je0j#m`0hM4-CbTc9()i0peQfHDbT636,Y%h%%Sb8NX1Np@B0ikJ*FG, -aeNF1$2Q6b(,3[S)kTm,G'GXSqML[d*a5S#"qId[pqdKV9eU)B94!(J2dAK-XV(! -lp!IDJf%UKZ'Hj#)"AZ)JPJJ"`)MrZD[R32$hlJfHEfbd9EfhqZ6T4*rrrHq1rjl -pMQ[r6ApehT20I,2TBQbp)Nj$mlikI0FRmGHdE-LBA&)hTFM)GZR0h()ifF)r+SD -b+5D4N!#$ep8pZFAe50ULL115&"&q*h(4j,I4&Yl1K"jP'-Xq8r"fAjf8U*3N[`l -R!!pd5&`ZH4U#AbU'fK9QGYi8h2DiVTC[l,(P8kYM6j2pUVmR%Zq9dTdGirkJje) -TP+L1jKYS5KJ8fZ!X6P-q`q*1kqi25[iC&%Ca(9$qfU+#mcc8'P@"3p@(V(AqKU) --M#ZarpR4bl13!'Qi*Fl685e5iNaZTXl4J)NlYXZ6q@FZjNIjl40Y9ip8pq`XAli -K6qbBEade`DPLBc!BbSBh+iemhE[5V9NMeaJF-Fhbf-+2QJr+,aIp`@$Y0K&qFN[ -5IQlNr-%Kdj52,I)C&LJE+Xl1dlJ*b9p*fB"TqVI'eF'VYL%T[qQDM3BEQ,D%p+a -a1cFN"8aP!6lB51%[a#Sb-!L%[ES5RTL%8r,q#l4F!%CXlE"%VqYXchi3AE6pX%a -!J,M#G,NQdlBaJQ3B-ZbK26DkBBC`biFRiYa(Mqp'SThr!iMKH#KMQL'*3Pq292p -lheIrM8Th)pLj5EBVYED$YlQUc*k*pEIY*LU3!2h-Z$3ElGTaXkPpNaL9aCC+[ZG -D+#5%XiC8RA'*JiYI%B95k6m"PG0U3L[KP%aGST6#m)%)4bRZ"bf9LCar-F6S3P9 -5kYKBpD[eb4&29fQb8$e''VK(eFIjY[abU#Qm(,-QcB&H"JQNM8!a'UT%(,Sffi% -+Xm+#`8*DS4[UbYFrIQXL&[Hp!!!"Y8&%3e)$!!,)$98,P+,%l'%%6fI9hG8KK#T -VE3N-Q,3F5@6!j!5S-MQC5!B")YqKT#8IN`iP0aaj4AiQbCRmE@$"0Yj1RfPhKB4 -*-K2C*!h)*pZcBqiY3rcNHikZZ@16JTYM[DbS%!2Y$2J5,dk3!$a4j*!!l(JkrRh -pM1h!i,9"F,Lm2$iHaj!!GR6dr"bSXeJ0,5klPS2N$lpFhZ"LfR*Tm$`jcj`A2'p -jDdUD,e(Aq8A)h*DS*"k!q[rmh[,1DD4iS8D0NMVk&2$A0@ikiqNk,I%ki0iRDDc -ZjklVJ@m@h+URcc)PUA[Vqkk%$qUGTVa8%C85rTdiRP1pDFkU'96Icb!ZAZrKjD* -NJ`BULMIeM*Jce!qTH[Vf+*a56Y)@m!hC9X2,ic[H$YbNURj4`V3pV`E@q2qV0%8 -LmbGHhh#SUR[SES!XCKB14DcA$CYUpi"+Lq)5-P*q8XR%"jaAG49Q3P`Qp*+$Y5N -`1bZD36AC19qB#`E$0U%8NP#CE2EU39RCCN@*i5`kKBi6MZS8p8203jaCI*lQ0B8 -#KVi@GBD`3LZ-'rr!JQK"Jf8,44+h(j'i,rDm$mj(!!!"Y8&%3e)$!!,d$98,h,, -!V3m%*bHdICbfbLeFk&A8ka+IfckUi[jp4HX1LJYe1mDP$K#Aip@ViEKIhECY(k! -9)5rI5h+a8A(E"`[V-3TF*'@dADrmPp,k3UpSbrd*p580Fl3r'j6@3[Dpm8'ZDT! -!DSFB&c0GA*pH["p!'VA"SZAkqZ&KZkeGYK%E0UH0,m)rRDH[hrc(M9,MjjVG*h0 -QI"2pDrb2NVYD"DCJ'h"8!5Nq!PJCG!"1*XSZ*NkCXT3`@L[8!U81Va#S"FF*Q"A -T&F04!31&UCk2IN6QaM)A#5YGV8,E(p2"`UFN3Y,fViVrHZYN5Xc*'J(T%PQrI(5 -2,Uc)#(rVm5kV-5HTCAGIiTXI6q*ci5*0e6mREq*bqr4l51GXmGFP(Ym5FXjhP9' -,lp"l4Uk8La0r'rVVGrimaNGiSQKECSGIHqp3A1pp[,b(JQDCm%"S`FG)8QMGqf% -ANc4F9(%66V8RYGi[G3L+9!AQ$X@hk##B'RK$-QYRC'$DeC!!+1BT%&+HTh!4hC! -!'KaQ-Ckl&Z'!TmLDUB0j+4ENcMkMK+a))HmE(rH)EAH)@CQ3!2CFlI%8!J!!!BT -"4%05!`!#Y!e9#j`8aI94!0mNH8NDejTXll9CVF"r6Th+90rTHeCq&GJ+[!TX"3# -q9SffYEQjEqk5GGF+$"2C%3-j%-eA"ZIhc2'6(lNrGdrX5RCcE(mE+%ILk9RiqRh -e!Z5,SM15ch`Grllp(9GNV`dLYmqa@6)fpjiTl0-[c6Xd+Me[@V()DAEKh21Y#UN -qU@Ra5mjF6fS8(U(kIrlSqC5N-M`S9@U8K9kb[Y[U+J1ZCC&*ekblPqK8fl!X$AT -FZ"DR@m`PY'PVbb3IaC-8ZdQ%a#6r,Yc2&&Fa%c&!V3d!9MZ$9iYK#JXN"(GTV)9 -c8ZrPD-'j@)Pq9'rN4@JI`"k$j%M3Z[)a8BYS%kSJLrD&$fq!LF&ZKA5UKXGB216 -r3mG1lL"BY8BUb#KfN!!!M9A(4e4N#2B(25`c,4Qj6`M-LR[bN5S3,)YFLP13!*K -eF(&!1ShC3+&i$`YSficAp!VDL6U1dX*Y(VB3#TMRDT8""j9(BGhq$aK8c4BFHKK -5Z2k-a1[iY@Yf0!)!!!3c384$8J-!"RF093e$)K)4jPjZ%'3Y'84UmN3N#a"CUkB -Q*lFpLicJGZI)5EFc8r+CIhHrlpZ+2"[Ic,He3*,9cZc*j%RB[MZ6%C,P9Z5*V-M -[(j%rNjr*[0R@GK&*&K1b0bh*)LK!iJIr6PQ'N94%1+J,1hML*hBK,0+!l9$&S4C -f%PiIcijT$+G2[eNUFK-MbHfpC'm6p0EIcBDF5mJT4aqj[p)@X[AQGIR'*!P,+@R -BhU3A&C159eN[%2cJbH(#&ajm5X-QD0&L4-VGcEkQ`r)XP,P*,SMR)FNFrFAJLaU -$lM`9cA8P820dQ"q1j-RJ+KhQ[L68+ciKBT!!RHr$(BZ5%%MI@aB0YUmG+cH9Fc# -*FlDI2+6+KXfGMlqi[`EXLf[bq5DTS"GBJ&RSpE(k4UNSE)5VZ#(4a%4T(NC4T5D -'+#Hca)G5#DG%eC'a54-U)Z$aJ`C3q')!Y4*YQG#!*634DR+,6CR$@+QN(kF-V(@ -SLpVJf!+P0U0c9&M$',E[r55!`Li$a$PLQ,KZKIc2X5Gal+,YACH#6FZ"UHV$eS- -Ujc5-Gh6@aB"d'i-,eVDeLc'L6-mKjM,F%r*FlYZBmf)r3FhBZqB8*mKFDkBmH&M -*CEjpUU5NcqMUMHZl,G$)FrP&YX*lJ%6&V")5fb&&5#AJ#$hRCZLJ)NBKdc[fS@l -c&8+41k84G`VH8bAIPL!j2GVYU6-RjVbF3lRZ&DPJc0[DAFTb'rRhYdi*$'iYhrb -A$q+6*eD"#2hXL3&E#6aS*Xkh8XD5XZL!8d`D3&(YeTiH)j,QXMTfCIrBQ',QaYK -L5NVMZKb[jqBq*1K-Xm!cl6p*FZL0,qj368Vlrpap[%LPH%SI@AC!''TAaj91(AL -#-@"3aPPimHVhYlZRfC3AeqX$cDJ8$@fJmqd&j*@%XYf`G)B2KUU3!"Si!i4'pV` -UFE3TZ%Vi1,Y29L@qKkdk$`8SRBhC9E-k+AX1V!#*JeYF)Z3(X`,GA!A9[Q0'IDa -q[E"flB1d$rZ$9epp#4ZUUbq"F")bcdZiN!#&AS+9c([M)*1*kmMQF"*$DeK5eBS -,0G(8$DlUGG,@)I*P,r@PJf6iV!k3!+U,`iQMEf'*D&FHY3@1%H!C2CVf%Lk!`1` --EZQV3EfDc)k)alY-h[lIZ!qhTr,*MDZ6TKGp,[+bNp-`jPQCpEJ64GUkaD!DXF' -80&)2BbYeEc[GB!TTEhMfk&f2mYQTP@l1bb2j`E4mDbafS5aG4rV(QBS,DAF-pIP -CbZIRk[pq5'N+mhpAIXl%CM(qp[IPf*a9Cbj2D@i@qUC8h'a@H[,JJMDNfrH5e-h -a@AMdST,jr-qAljL($06eY9h'+bI[Gal`F%%Abe@eJpQRlELVUi0e"4+H`Fl,5pZ -Ha$lSC'#l'ZAeThN#F3DQm&#m#9iTh-1AH$!(GljqYG"C`e[Aj!i!N!--#e9Z8h4 -eCQBJBA-k!*!$#!FJCQpXC'9b!*!$2!!&"#"[CL!()'PdC@ec,J46G'p`'dPdC@e -c)(*PE@&TEQPZCb"dEb"9EP0dG@CQ1JY9EP0dG@CQD@jR1J#3!be"4%05!`!!-!e -,!eYX#lGU!*!&U!&ElEm'"J2`%G[bI`KB3XQ2"YBE-CF6!*!$"J#3"3d!N!-r"J' -!!*!$"6BZ-#ia-MBZ-#ia,#"$Eh"jFQPRD(3JU5!a16N`,6)`-$%J3@aKC'4TEL" -6HA0dC@ec,#"*EQ-Z!*!$)JB"J!#3!`8f,M!Z-496G(9QCNPd)%4PE(9iCDSJ0Li -`,M%!N!--!#J!+!"r!A!%Ve99!*!$)"qT)$%j16!Y16JJ3@aKC'4TEL"6HA0dC@e -c,#"*EQ-Z!*!$0%&9Fc)!N!-"5801)`!$!*!$J!!"!)%!!J##!!-!JdC548B!!`# -3!i!!!3#"!!)!JJ!$!)-!N!-FBA9cG!#3!`&*3diM!*!&K%C548B!N!@%!*!$&`# -3"4!"5J!!!3!!C!!!!4)!N!LG384$8J-!!+J0@`TD3!*hq"a@G@ITa$j8l""l8cG -eGYLKMlFEHlVGQfq(XapX@&9L959B9@)pKKe@"3QS+DEi#q$Kbe-!CQRmTQTq!Zi -``mf2ZkL'Ld9k''%[lENXFkBX&8b2crC)HHcSaD`df)"XN!"VQK,Q&'Q)A6F&@rG -%"d@fP0"GLc#jbB*P-N%ak6ATZem5+jHST,h!2bF2)QX!N!1I384$8J-!!+S08`U -F!J,[eZ8-S,kJP[&E'CpCQD@Y&Xr+1VFhGlAHVGZca@qF!B!"!'J!B'4c@4N!!`Q -S+DEi#a6T`jXZT(iHTmIX+fkNG)fEVG@5Ne4'kQM[fe09jBc#*)clFhe!EKZmQ"@ -M#m+PF)ED5!k,d6C0(9`f!!X9GM$5Aj03pe-%abL$LY'cdGq3!#CfI@,Tfflb+rV -M'-Rl$J#3!d`!!J#3"3J!0!!D!4Z)'e"XC@&cC5"TER0PFR3JC'PcDb"H-#"hDA4 -S1J#3"JX!#`!V!#ZJ!J4,!*!&(3!d!#d"')J#AM%!N!-k!!%!N!8f!)F!5J$""!* -25`#3"3)!43![!6q)'9i`)'&`F'9KFR-JG'mJBQ8JC'&YB@GPC#j,!*!$'!!m!%! -!Y!'B!!%"!*!(!3F!!#J+!*!$'!!m!%!!Y!'B!!%"!*!(!3J!!#J+!*!$&3"8!'3 -!L`''!!%"!*!("%X!N!3(39"36!#3"JG6C@Fb!!%!N!3(8f9R-`!#I`#3!`G6C@G -1!!2r!*!$"d&38%`!N!8"!*!$J!!Ird!!)!)J!#)%N!!!*JR)!#)6j!!L)!)!)N! -"!##(i)!K$r"!)K``)#3Cra!S'SS)-M++*#BbmM*10!Bj*QAd-K*P)Cr`)"($ -!%!)ri#!"!B"!!)E!J!"!!3!!)!)!!"2N!!!*b!!!"*!!!!!#)!!!!8!!N!1!!*! -(J!!Irm!!2rrJ!$rrm!!rrrJ!2rrm!$rrrJ!rrrm!2rrrJ$rrrm!rrrrJ2rrrm$r -rrrJrrrrm2rrrrRrrN!-rrrrq(rrrr!rrrrJ(rrr`!rrri!(rrm!!rrq!!(rr!!! -rrJ!!(r`!!!ri!!!(m!!!!q!!!!(!!*!$J!#3"`%!"rrq!!J!J`!*J3+!#N)#3!L -%!L!*#!)3#p!$q!JJ!!J)3!!)#)!!#!N!!!J+!!!)$!!!#!J!!!J)!IJ)#!2m#!J -($!J)"Rr)#!DJL!J-S)J)$!')#!d"L!JCI3J)'8F)#"Rr#!JF-!J)$rJ)#!"J#!J -"X!J)!!!)#!!!#!rrrrJ(rri!$rrr!!rrri!2rrr!$rrri!rrrr!2rrri$rrrq!r -rrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!r -rrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!! -!!3!(rri!#!#$!!Z"!S!)3J*!#B3#)!K)!K!,N!!$q!JJ!!J)3!!)#)!!#!N!!!J -+!!!)$!!!#!J!!!J)!IJ)#!2m#!J($!J)"Rr)#!DJL!J-S)J)$!')#!d"L!JCI3J -)'8F)#"Rr#!JF-!J)$rJ)#!"J#!J"X!J)!!!)#!!!#!rrrrJ(rri!$rrr!!rrri! -2rrr!$rrri!rrrr!2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ -2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ -2rrri$rrrq!rrrrJ2rrri$rrrq!!!!3!(rri!#!#$!!Z"!S!+3J*!#N3#)!T)!K! -+8!2i##!!#!K!!!J)J!!)#3!!#!S!!!J-!!!)#!!!#!J"q!J)!r`)#!F-#!J'ImJ -)"U#)#!bJL!J-!BJ)$3')#"Pp#!JC4`J)'Im)#"``#!J2q!J)!'!)#!'`#!J!!!J -)!!!)$rrrq!IrrJ!2rrm!$rrrJ!rrrm!2rrrJ$rrrm!rrrrJ2rrri$rrrq!rrrrJ -2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ -2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri!!!"!*!$J!! -!!8!!!!)J!!!%N!!!!!R)!!!6j!!!)!)!!%!"!!#(i)!"$r"!!K``)!3Cra!)'SS -)%M++*#BbmM*10!Bj*QAd-K*P)Cr`)"($!%!)ri#!"!B"!!)E!J!"!!3!!)!) -!!"2N!!!*b!!!"*!!!!!#)!!!!8!!N!1!!*!(J!!!!F!!!!2J!!!(m!!!$rJ!!"r -m!!!rrJ!!Irm!!2rrJ!(rrm!$rrrJ"rrrm!rrrrJIrrrm2rrrrRrrN!-rrrrq(rr -rr!rrrrJ(rrr`!rrri!(rrm!!rrq!!(rr!!!rrJ!!(r`!!!ri!!!(m!!!!q!!!!( -!!*!$J!#3#(G"4%05!`!!J!e6#eXJ!`1QB-1UDV-`X!%LBQ!h5l(E@C@J)',$(ZV -C`*K9-3YM+VVhTe1X#JZ*BmLfiRI@!&)SrH'p`)*+Z-9!Tf0)-Sk[fIFQ)JkrkFE -qqpLI1PG2++D4"4f4ZS)CZ+2&'UkSDLHN6c)+ldA1"3#3!eG"4%05!`!"!3e6!Yc -@"T2hdNE0440Y!,6j0bkmfddECX*X[UX,hi6GX0[NhAE9eA9K!!NiTBMrG!Ak'M5 -Q0Klla*eVf8k#LE$6%2V!XqJ!D*!!aElq",i'!*!'!5*"4%05!`!$LJe6#TXN!(q -'4E$G16N6X-81A8Y16ahE!48$fl(kf!a@pFiq++KBI@c"EUcUaX!rBhp8p,rrEir -cGPBCaZS!#jNe$9a@MI6"MNEhVP-Dl!5cmbJ8h-AL-N+fe,NJbA-,N!$IEi*fJZR -44(62+AQc%pfmbHiVKB3cc%YDkTT5LKd,2KqEdhm%m(Vq1HV+dqTUrjpIEXHVRre -$rrZ4PL8#Z$0USi*Y9X&)*Va&Ufb-9E9H@cjLQlH&l@%9IG`AaY*D6+58Y!*a(da -qM-2AVK[QKkBCkP2EpNhG$lS3D&U!*`6)!*`!6,hk,3$qkJN$%Am!m+*bi3)3()+ -!!B*LB#diLj&"M0m-3Z351Z,UBj,-[5Ka(dcIG2P&a#YXbaJ!N!-`!*!("!!!rj! -'!!%!N!F#!*!(!`#3"`6rN!B!N!-'!*!&$`!!"!#3%B%!N"k"!2m!N"b"!&3Vr`# -3'S%!92p8+rm!N"L"!&6rN!08+rm!N"D"!&6rN!98+rm!N"5"!2AfN!08pT!%+rm -!N"+"!2AfN!6ipT!&+rm!N"#"!2AfpS'3"PEhp[BVr`#3$S%!pIEfrIq3"[a@pT! -$+rm!N!b"!2AfpPErIrH3")(rprD3"#[r!*!+J3$epT!$r2hh9Rq3"DZ3!hrfpL[ -r!*!)J3"8pT!%rhrfIbTr!*!$9&4r9L[f9#[r!*!'J3"8rrD3!eErq2Gr+Rm!N!0 -89+[h+rEr9#[r!*!%J3"8rrrfN!2mrIG@9#T8N!9rUrIfp[rr9#[r!!#"!&6rN!0 -8q2ErIrCr+T!&9&4rIrIi92q3!e6ir`!!rbY8rrrfpPErprGr+S'3"+a8UeEfN!2 -rre6ir`#3"2mV92rfp[cppPDV+S(fN!1"IrrhpT!$re6ir`#3"[mV92EfrIhh9UZ -Vrj!'IrIfN!08q2m!N!Mr+rEf9[jrpj!%ri(hN!6fN!2hq2m!N!Vr+rEf9[hrN!D -"pT!&prMr!*!-rb[fN!ErJIH3!rD3!rIir`#3$[mVpT!$rrrirrripT!$prMr!*! -3rb[fN!2hprMhN!2fprMr!*!5rb[fN!48pT!$prMr!*!8rbY8rj!&92Mr!*!@rbY -8rj!$92Mr!*!BrbY8re6ir`#3'[mV92Mr!*!FrrMr!*!Hr`#3-9Xj384$8J-![YB -393e94")!)@,Z9Xpp[MQ2i`K(#'NU`Eb%N!!Hd55Rf%a'SLBA$HH4*XFP5Q3X16r -Ih#NNm6B'59hrR&1L""%3F4R(-M39"T+!)9L@C9bA#BcY@0CPa&,'8TCD5kPPaE( -@X6E'h2IhHjlhlVdB46UG[rr2!"UPTb6+J5")JL!))J-!AC2rFGAj9c@L-`Kmhd+ -'[J6(q1Z+$jQDR`!TmAH2rm!G0q9pqYpU+dC[8UlHIaY@h2#0fJUk5X4"[[S'%EA -9"aehkAlc'3AN81hq9hXVl%r[hIRZl*(IJGKC2&,llQa-X$%q$eVkhrf$%d5U$`F -k8Nk3!(ZI'2MdTf(E4b"C[[Z(82+ADja$cFXr(0KVI[Ff6(r2daQBVZ6TrI4kY#* -qj[0Rk29S4D+0TbY"&+llr*Q#I`))2NLIY"-J))jBqjHF#mFYBD!#0Ckjr+VP`i* -r!KdT$d6Ql1D9LZJl5,kIcbmrTE+`4+9Zh[2RSVp35Ic%mC0S1kAdAre$f8IQPj` -*%+ZLiF*iVrVRcPpNpPTlUaHlEq(QXA!K6cB'aXaj[mTccq+Z(VCKF&'JGpp(EMR -!&!E"6Pele0lj(E("jmk%!a&3*il2'R-qTf)&8d'3!(3VQmT5Kj5PDNTRRph12lr -Sr!8Pc%66,d6$9qJfifGjaK4U#NcKjJbY16"&$K8[KMB1U@ZE[a(Bl0LX%VA+AU` -r8TA2*)0A1Y,1jiqF8SiprePd(SXrMm@I9iR5Er8SGflh0de*AVTMHY+80%I0HIG -(hDip4fJS[aS,1jcIqS0jlKLr+Y5ZYhhV$e2Q6Y02)A2T8*hhY,Y8jL6VT-TfI@G -9IQN4%8hEGREFe@'MU""lY+2rhGQLdi1*R&*d5KX45ZAJcImUAJ4SZ+HlZF2Qk64 -S9rjIKA,jiK3GU,*,Mb+a8I[ZE9BXd4I"G!BL'@fj2he5CH5$")arL*DVd&m[H+A -hKdTe,mcV8kD("e2,#ek"b*,BpV1-I2-ICmrHpEiU"N)8krh[hK+fk@-E333[@*V -aURqal4201e%MH5KI'BBY3H3(41iGkVlAfR$RJR"%(aXrVVmarVaHS[[ee2JZN!$ -p8diD0-pqFF4mcbU&a660eNY'I[Ic95S#XR0m*19f[(bP!!cq[&R&r@mpYXLqa!U -[4*%N[eb$`fihXT6ldpflV3h*rR#mfFl,S1ai(D*bE&K!b[%9EH3lkJ!"Am9UFaj -I*!k2Al#-50@VlJ"P$"kf6X2,qfXbeVaFU8FpM'&TTFLBGJBaZ-l)B&Y*hBp4%,a -51RaGK,`[!Z9qpXM,+D#NjkD!JTG'i,Xlp`EHAE&ab'l[3!5%MJL)JU@AmpYUhef -Kfh`h8h#ErqK82I'#U52+EFY0+L*[1`THD90QbrbVbj2QhKrNhGpVYPJXH9I2QLC -I"PdCp9a*@LaQLbqV%8NpmeJi&Vhk!$Ca*QLLaq@J!rc5E#P2jPalrl4lSZd[e8H -@[K5)2rB0,&d-+[LKh9lK*$*F4i+L&C01[H5H2RY69)hhMamE[HRG#Q5@elG@YMC -e)($XGSUJD1jZGMB[4#6(rfReReEMMB'A3"51eUl3Kd)jTiiKBUE[Pc0("KZ9cd3 -&%3LldA!X&2mJkNX4QMB[FMX+jS9[4`C-Nh@Hb)09(BQpY62pAIILNp&eDm(-aAN -JjMNX(q,D),,"ZCIc3mP4!0lM5cqUY2pEecmm"q#lDiBqj$ZRkpUaeM&I+K62!d& -2LmllD+cV2QGre`acRJ-4!E[9jEc0#Sdr2keNjNl4RFMHCb*lAfGI"D,rd-P3+%I -Ed*bR44Q!'85RdYEKq1RN4ldcVmI4PFGcYR[dVr5KFch(I8'$NM8'65qBqF-ccef -j6R9G`jqmjklBl9hc,E9Gecph46Qk&KA-r*SEiSLDKq-+Nk@iB$)2Sd#SEHr"6kK -JhMI(R%8NA%5&Gq*9r-QI*K!jHHF#$&q%U%j0a#Xk+'S'J!b5,488M@UZ[H'VjYF -l1,T2fCUr4p&bbJCf9i`r0a+P&bJk[bHZ0`%8FQS%p3BB(U`*N!"hA!V2#I#Yb3T -59ALIm`&cAUPblP84Fpl55EPA8T4Va@C0FKqJ9iHd9j0(e1bhk'rG@p1MFimidGL -QCNqK[h96lSr1"5JhIE)cf8JAiZDm1J9JVBNfU(&aViTKZcG,eHcAk@rGkrG'jdj -DIH6H0`qJ'*beqHXSXVkq3m@GDHDm@C24MD%B-C!!`bQD%5"#E[ic%%ZUHE`0N9r -)m+cMcjF(L1(pa1jh9NFEdXcc$d81pXrdQkmqd$mc`hc0fL0VXehaf42SEpf%'G2 -QCZIBCKcC6qaqjb#aGI@b5HDVkj,lqfF'c0r"T8Zi0'RYNG+iKp9TFbFeCY25Cdh -@!iI"+MiDXfpb8icCfjQ4U`FfZP4hmhKr#8HApieE+IU*SXV+EJFJeGre$f'A+d$ -4a-S'BP(r0BH+$LREaN-+dF%Jf5*#NJ+cjC(b%VHV[&X-60"![4FaE6CX(c5dqIm -[*e'8kSpi3@&%!0U)SG(F3%C0F4(bQH&j1lS"b0kR@e'ifC!!h8P"9p"`C0Sh`+Y -aKij[RVbPa0k%a95-Pe,JeKLm,'M`QpXGl!XD2#RG`8X)p9[2'6c!%SkkVE3[ERk -G2Ke$pMjlAfXcXVQ%5V6q@6BUNc+eYQ159-R@2hXfJr$J%5LLUVYFI5mD0S95b0j -Fm!k&&%85hJ0MRhKlPdVj1NNd1,+c3c*lfTr[2K0+F*DBKNZADDL-S#aA1AFK!L0 -'VhfE"DZGJY8qBVIjG3Tmh3q`hD9ZG2!e4(2#icQl9+IhQ,kb82*b[SbBp36$BLF -#f*`(m(daAddl-H4m,Li"ZF[+JEm$p)0%ZSQ3!%bCp[UlEYi,3,Q,!2mqIe3I3p0 -kEPVZGKA9UAdiVUa)(Q[#mB9kEIX-CLjM)f98bi%'*Q[rqr@q0NVmK)[2BpQC%*H -ld&cEY4ir0f2B+RmqJG4G2r1J'3+)&N)$D#!+LTJA"9Rd+&K8jbe[Clj8Zip"-(% -&'D2ZRj,j%KeFIBYhm44e6HK0#,*4$Pc6U!K*ICY0r9h(Fd`)Y1k1rUl6%U@5TNB -&!ETfj@YS4GGKp('9XqL#aNmDLj`*,BXP),f))m""[,GG6!iRRp[FG@,[MUl6cr9 -fA4kpkAhIAR0AeHK0A31KkqDi84`SYGV$`SZ(`%*(M+212l#1AFi2Aj&GYGaFqlk -21c0r1)iSQ64U`1'EQ#&23qGd&!-3r3r0eM%53RKDB20&31Rf+mCKAkCUA(YkU!J -4'P8EBh6e)U,Z-[*abHcF$4$"krN6Tj9(J22XCFaJJEG*j6+6AK'2Xk$kZeV%-FX -m`[-fMML,'T9NQ4J1&Q5@fLq0VQb@Q9*SFcUrQ0PefVF2aER2R(F`cAceJUM2`FA -PC4S`rQ9(C'-DYQZP!!`Adc*ac)#cb2M#YmTS8J"!%dAD3d!U4!kh`1bRNVb"EJd -p0-GY3#!H4J2)D`!FaZFK[p)j+c89c,Yfe8-PUZe,X+,kj4B2A3QGI+9D0@#VND# -YlT5Em9AbY-@Y4FKXl``hm2D2M$rr8#C[M%LSDjIaYTAUBmqfa+MB&)0,B5Vb4&Y -*HBP"E"b9bP&(B+f4XT!!B@4"LBkKREd&$m0S+SdMrdi6Q%$0Cip9(r!dZp'F%-d -0RQBVQL1bqCahL`0S6K20hLhfS$NQQVeE8(4L0U*229'q3+IE21"A(kD[INMJ9ap -!Ec+Ud1HiJ4LpUT-4SJGJp+@*'L'Q8,IfVT[BK)bQ1a#G8hG&@EVXKIMTh)+VpZ, -4G40[aUBMS@*NGH8!&q-K*fdAMMN6EKA2dHXQhN)CVNRj%'Q2*MHZ01'+f!!CS-e -qd&*Thm1AVc0FEJ5KC-4q%8"Y13jm%$p2mk9a,SbRB+(P@dSQpPNV*rEj9$a#Jm6 -Q6f2$Td!DZ`'E6JPpHikEMjQ(TQQ8TFRV%h2-`dNNImEQimS5-[[bC$8f@)-P@rG -Y+@PUSQRcRjee63#(+,)("-De-2%DXK4XcQfp#i@IfN)Q99G3q#N*mUTNV8TH1Lm -')F,S#Nc)5R$)C$Eb!r(@2TP3fMkjcGmIX%pcY"#US2!UGPRp%jb(#'$l`f#1EIU -%k9&%B[HjLh@VIj!!!mlPH6Ni2HSDa6)V%!hG"q*%&adi%0JaS1mJi+)9QE&Z!rP -PDAQJlJ'BPhhY0!aJ'V#jHi5!b)-%D&eYcS0a@#'EK(eY5mq"P(fafe3e*G",3"+ -Clbb)RTTZaH9`+@e2E')jLmAQCG6Tf!h`CCS8D"m93)8hG0N[KSZG-5'-X@S(PVT -Na2r`QmG9B+"U%SLb&95X3Q!9"edD'kH8IB`&8iS0*cFrJ@%NdLX(5DaL5&-AALl -a(MKeaNB%5r0U0Uc%)H-21qXQpKP)L8fF!4CZe)UVHBjl#9MC#0-#eFf)RLUiY13 -Lc%fGPUkTeaa9`dPT+1J052@CZE)[Bf1NpGV656,pkmXJ8d($J1KjEYkBD#eX+qQ -`JE8QA$(Kjd"cUk1,J,Hq$0mQ#8lcY6GV#`hGYdpPHEYT!l@GKQjPCBb0"b-!qDb -"AL-$)RK3i'JX(ia`Nl,l,3!"X26qpTk1r[D3!(Ri1K-K-3%,5&U133`hHiZYM2` -`HmYB06,p#KTd')NFCAN5b4be'4Fb!$,-S"H@9R@F%N%S6LU`m3bmQ#@+[G64C1M -ihV'ZLR3(1(`UEDjSQXeEZC+2!QMCa@!B$"c$HbcITUYJ+@99Eh"bmIhkbi+eY1R -@0#$bXPhjG"R)2BC%P"rQTpFlLd,((jpjJhm['VT@p)mYqF!lL-"!%26Q6D``,KD -X9"NfUPcb!3T'C!'fXKV$$Mk(&ee0q-5l9MVlhipV34iZ41*`%GJbKHalafl`$k[ -bL!6$('F!Y,lS'm%f,J4r&5C1+RE4qD4JhMXI(%f5-1"92cLUq!8#"Lm3bH2S9j( -hIIlmBjH3!-Rf[qpl)dU!bcej[H[k$J6H#NA'kq"&)hd(+0[V1c"kd`dCCVrPfd9 --J,SZ$Q2'ICjA,hTIT9E"4#jb(KZ5jmh-#1JEKq**5N63B%Si[$1#!q[k$Z38,BX -H5XV$firimdp&2KTJaJp)X1'G1Mm1@$+[B0iEYa"V[HZ@c1[p8m3QVe#K!,0-"#! -CCbkCCkkXZ+CMD#2qb3qZ$CSVTrk!LN9kLBBm+`'$Km+(4-2iFaM3AVQhFZULpUp -'edhp`H9",,k6f*ZkN!!1U-ThGiV"235m[Pq2*T@B8$![--"J%#8LSK$(FFRb)cG -3`[Sk8brBa6B0ejPS'rPbb#@Z42M+3GPXZ5LDdlJj5cD2@[I@YRr9$Q%XH3d#k5b -BGhEG+)+&J-VRDYXVZbk$D(!#blX'Vad!RJF+jM@X#pREJCC%EUc1)1(['!jPN[P -f@`Pe#ekT(D"Z1@@L*MhJ-XhSkR0NCZG@MNAkB$!BlY3c$rV*V(Y60`N0%jZINEE -FT5i"JD*'&,2#!jfU4L(lqDbZTLpQd9E4h%UPqK`c%!%bX3A0'qkMk5I`EQ-Q"63 -H!i'[6'c3B-kVbLG$ibfI3k4Pb%"I)fmjTR`fHIL@ekVbMBG9VV@q&&Ea`Lq3!'% -Hfk4(PQ+5@dF(GLJTY0e2DkM$*"2m0,p0*+8)Y[[pF4Pm!2C9mRVV$TqEa)V-i5Y -N9j@861!X`qBE#ASalpGGe'cdSXN*R-99dL!D$,,-9`Li@,"(6[T)@*B2+5YilLN -Uq*Gd)4XDmqI$P$U#(bapIb-#HZ'1GAe9PkG3GJE@BYBGiCLPIm'VlQjQ"#"9H!@ -a[Z"9mJS9m!UM%%C(AF80q*QR#4SLU&`b'3FdH!p!dd8d+34HT'B`i,K1hclM8S@ -SUkJJG@p,1+jJi5aC&LbFF%S+fAfQSflLCaee66p)j`K#cc)@b-8,"(+PB0lQqrc -jR*!!l0B#[eaam+ZQ@cVUPLc!6aH'"L#)@rhj32SA[GNUR"Pd1BX+jK@mLkcb#pj -'NK6I,*Mh,aY!8J4"e6&X-04P!$U8,#p0a[*H#X1BaP5DQ#36fll,S43D1iY,ilA -)+#-UiV2b*-eR`D48lBjAKaY#6Xr&E('a,45KLf@PbEr!`!3ZG[-NM8cKk@)5@E@ -eIm%%`Gb4JRRV&Ph1Pk,MS*iJ$Dd"4,0KVh8irYSl)miKYI5*J4%c*J#PIlXSE+* -S0L4hVKYIZK%%TB*A%+N"XV9+MTMGXF3$Gm+p$EUQZ@1CBjBU%-$l$Qj3F6JSkRV -j#S#3!,M$"EZfkm)@+d#f5[eP5Xl%q5MRbq5`#Cdl4ljU3bF1Z$R,FTD[a$%BK5k -D)fL1BC*3FEb-1"T820P4D6-e*$X#B`q-UGfm@@'U38AZ(!R((U"08ilKMIEiDbG -NpcT63h`2SMMqiL!ba(EpM@mJ8RIdj9&PXcE%(hqRZ,XK149VZ0B"FSc2"XC[Hq! --+,Th[6`F0kP#kh"L4HeQ(&f)kd1@--MFIAVqi@&EP5S1THDiI@f(ci$)86CRYfr -INfI8LmVjj*8GJCf2U+a3%UpM,jp4CDS3U(K8hcN#Sr"0'fl2,VL(d)+LHQ8d)%h -(Ch*%B#&-2"dJkJ*G4JEGjBM@Dh31hIiB6$dG#pD%BpBei@lhLYi+TIpm&L)hD9L -8c4C-C,,JIl9J&SB(h1Y1eqHF!j+iDdmH1i2*mA2I2hFDNd%LT@1bc"Gk"FB*kYR -rI9bRbDTh6Kc(*,R[C%re1jKBDQYT32*icXPDQJa@BdB6*Ii"FDD0))K$%FGCp3U -FS(8lcXC2!lb2"-EF-91$ilHA+6,I$@*@3r*&6+RBjb"$aiT!M#3l`JdLd!lSq8Z -!dVrqY[0EG@E(@&&aZ-`aYV%iE-+R)9b)TJDBE#Kh)BkeKB!1S35K,EC5-U!VXf5 -bVie&q9lL``'14PHI$ITLZ+,F-6CIT)MkUb3bU,)4FhGa@$90Ak"m+alrKTl#b`@ --c,(GNE68G6"CC[3S#d+2&+%(`,VG'*iY8E'fM*EQq04"J*-$Rd4Y*(0--YMN0M* -'b9'p)CRkE""1V9k&KbaVI98[`V$pGab0$5rR3!3Pa'!U0SqC[QRYJ+1p3RaLiFK -63fl6q*!!fb'lR`mKNR[)"RD+J"CXaZ*J*cKA!@f"-(!k!`-+C51%b3$#2(De1qk -r@JjiNJESKiNF8!cNFMcjQ'UcR&'(!"EA@C1qb(MF(4p2i(Sh[4jTK5(5*b0dK)e -3fTl(@pK80ap80[iPKKE5N!$,Vr)!bB)$,0a)VaKp@e9@ZN1+$82U,KK5U)Tji#& -QZ@jmXr3#)q3&5&J44,QQ%-Q`$Ti#cM!Ji++k+#*KaL"!NcYL@U@5b+JU,#Bah0r -m%iJh-M+)$#l&8A2`S!+NI*L-1TV(DFQ@'r@Lm!K&"cU,BBLH#TFY'$Z"6$Gc0"` -c&Gq6jejK-JA'aZXdc`L'&hBNQ2Kj+a,T#qGd0LU3!#)F--1Ibmik%'AM*)%b5F) -3@!YaUG"q+`J"$[[FIL)(p2%'*0*Z-G6'3l-l%KK@CPq0BGhfcrMLJdJ+2rXaAIi -aQeq-ih*fD"m4(HKB(2md(e[X1GCdpcDEBlZMV9$NU5eN(VHDL+SJ5Ac'BZ$YH![ -iICq,c3RPP["02L+61-M!&`XQ`XCRr1SZ1#1)i*!!I5#`&BYMZJd-Gc,$*Ml#3F3 -4,$DQ,4BLrSaC,21`+"fNC@qK5k[jdQGmT*Hjkbi8mhD'MpkYiCB,KLpNFXpF#Z" -3I)lEicRc036L4FjPBGh#JF$)&0SY&JNb2F`*b3P3&j2BDG'VdPhdHL)#)*V0"L* -H)FLJhCS61XGB608f8QEeb`(TF+YeRh4#0E9(1YaLXQFD5'ph&P'8acjR%D%YR2) -XZQ)h[L*(KdL3!(l@@14c%''#ZP1c'iYJ9T4bp0Vr(U6T+EZN!lGeC13)JXTY'0c -$JpGTN5Fb%XSHakXAD6JGJ+'Vd!"'p$[(GhA!84XGf$ar#!6Jj[FELaaG+*ILpX@ -q6Vk#lB6cJJ804Hj#V4(X9$@!(9qm%F6(`cqeZCda@SS%e`aHF$fCaE"6$1Pma"3 -NV0)JBAdNK99K&X*b5)'dIS5%6*iQ(L6r@6KpDic#U6J$eR[Y[r*eH`Bb)0qhJB6 -Q1aSXV+RYZ1a,6eJ6lm1VA+q`TQ)$R`f%h%qh,jkTDi2&8l%r@$c53BdAA6PEC$* -6aEX`hNJ4f$JjG2$BZCiF4DD,&A2)-4d%e`f!Yq`d14PZ)`I$PQ@@4e&m+h@lG@E -lF*K)dIhY`a6CJD6'A%3e(h5"iI+ZLP9YA4AV6bHYABS)HfZYj$`BbG++16*L*0P -N9IlmF%"EZRL&a%XbKa2FTV#M("kKVFZqq(65l4N)XS(El"G$c@,S!F039lT$piL -K0Zp3Q(!&X#5(C4QB+lBmLX[GQ"D@EmMB8CA4YX(I@j9a1QP+5'H!XLJ"10j&C!) -!5)9L#N-F#+6Fd8AAj)[MTmkG&#m+V460Pm,(!FH+5@fMmrP)!JkM@0UC8BmSL$L -+SjJ&!R8h5S(#@6f4Q1Ce2UXAqETPSb58P*N!DTKN%`EXei[S)LIF$fCmR`hC214 -q$U*LEI#hU[3Lcd8F5F%23cC[e!"l%cec[iQFDQNNT'Sb4$$$'!*0TcB0UlE-Amh -2Q-*4DK#XZSD$XC1b,le&a6$Ta!5'%1l1N!"T4K6%f650r&FlRa06"XHDMQ)A!3E -)mSC9FHH"#"&b6af(N!!2U$TGq3,11"N,%+P`@64`T2[)F,)mpaqq%hMElA*ZENX -pm*lG2UMf(AC4X+5TNr@&2$Pk)KBj$'H5+["fB$2!K"X&UA%K!CfC&YUdmQPLTGM -TLA5*%)"#@@ma'80'!KDk5+S)&N6C['2%'Fqd`1baQ-!f[2LQH''6,hbV3NQA*fV -+e0rqJKD4B3Ph$2P194qAR[[ApeY,L*`8YUAUb&MQdY9jbFd+6NhCqcfqXhHAHI6 -5MS'G"CX(mR-hl`L`#6&[FV,kl$QabG,YEI+Sf'3dGqGSjZp'#dDIdEDKj9NS@5m -RD@)5imNCZIb3!)+5#TYi95KH&BJ'2dAp%qNDdH0R&",6$cLPZB&bM+j5bj!!P#N -2THNrSQ5Mmh%UhN45"XAIi-lH3'E'D#"$UAh&[6Re*h[Up@1R+ReR`krNR1b"aE4 -qmYaqBV1TBcH@bpP5l"!4"#pHjBjERR(ZTSKTjDL$N!!*U(Z60mchmp*HSk)5*LN -9)c-1,S@*EJ9!$SM+IS-%FlBJQ@T[JBHUa0!5LV$C#0'dSYjY`#H,D[(PR)01 -rSjFc2rZ8MYhBYM"SfcQml3BklM*&Ecc,3&dVEce"fhT6NHm6!9$0SFQ6b1j9(%% -9XEGFbKY"T-4SD!'-f#pG(8@bi',5l566hUCp@'bjA$TjFfcj0N8DK"bY$fmUZT3 -AVE1r$I2%C$Kq-ERP'G9Gaq$!VAf8PEmeN!#r#`Lc-hF(Xll%r-IG$*TUc1[5LjP -!T2b6#S5ZP8(%E&GS`VBA!URqG[0ZdfjIhC8NA5(8N!#$0XENS+EE5@bPL"3**GX -RKHqe6U)V(cp$4DkD,4K#N6XPXhHd3-0IGT!!cSK65!XVNXB1)RV$00*I)N%SZ44 -iJ!!KIfpq`F$1Cca,ZYhmab5CckG)9(h[3P4l1SBSEqU!19QpMcEYF*LV&4*U*#k -h#f641*'bU"KFYaK"8QB*Se$XNm2`!UCP+d+ELL"+4qj269&LS3TSqKUGlNHFP)& -pqqH)9Z6MbI(T4F9HMaabGi-)iLI2Kd#jb[SQ[pKMhIbpUj'mkV4Z[R5004iZ,(H -mmAIc%p2L0BHp34I,i069C%0L0#q*jK4XQ!TTQ'9!'rM&`#Fmd2+K-hCe(db'HUK -)Q&KB9d61Mke[SN#p`6*J5F2![1idZ9ABbB(DlEf#"Aq1DlIX+j+0C#$A#h0Kr8I -1al(40DBd5Q,L`!D`B!SIj'"IJJ#I6!&HThbkh&)BQY"QUrF9m6EVB#D)EH3@[)! -4H*AepXrK9H"SKX5%3HmLH`$LMF`Ja$ZD0+AjBR8`J*ci#CCJBZ6SPKXA$YB9X@M -IT%L9'd'JkRq'&&#B&JXN!I#l"NMbc)k#(B(4h*Ui3X'e!XK5V$QN[kLXKj4ILYi -hY#A6[U,r(3+G'""E!C!!DAiG)L2dA2rJ#&3[D&RA0iR3P'BjT'+5N@p+4N`S-+* -DKVD@-L$N&MX(cYGJ3A&L"CQK-a4*2c0FKXZEG`b-lXV0S'X&Slr$eE,1RC8pp6Q -9p6fk(dKGRe0IHDcq('pS)Q!mQJN66[cBh#D+[S8M"-F@)U6Ch"&,T6HC-F'r)r# -lM2b"6*SB'#*NK@(K9C6TJHLL[*RIflhQ(Ef2l#c)h,PCHMFB[598PXcS8aC#pF) -0Z2j'ANjm!8fZlNPq&R[MQQ[LR)%Tpb%D`JGN#Bm1mpZlUMNS8e+%F,!MJl`HJZa -'GT(RpI4[$q3(HRGi'C!!#`j,a!#!8IJ8-SP#`A5KTScKpF#1h"fMQ8%A1mJTE)U -#r&)H&iJ1Dl8U#*14@d(cDJXk#&5rUd4EH'iq0KM)pqmSi)8[0[ra@N)Efci`)&( -R8Tiel3h+U#8+T8b)M[E&,rk#[4k+&$DIJaNGXT9#*',5i'RmcL*+3#cjC+J)S0M -ldJZ&IY813H6mD-'E[&fP+Fd6S#Qhfc)!-EiB[&d(&a6b8c"[qG'')Z0V!!'Pk4d -rFESmr[HcMFH$AFGI$DL#Eqj!%Aj)T6Ph4mEXeiGMIc%@MSZ!1BQ!JE),dh*0`&4 -J@hBmXl0!HUX+$JjNf42EUFMALSfQ+4qAf+G5XDLKdf4Fh&'`QDmeNG-RpSb@ZUE -&Kak!X9Q8`-53!&f2KT4VM$FYPX9Gdjq`HACGd4Yjj&$-#U#$XdM*RSmc4"L`FAC -,MRF3ZGDdQ%"0baL4DFaj(8S[)Y,ER$SHM!2IZ0SkqA[A%0Kp+5J,4Y!p"H%JX84 -()3+JS(Q09eKi24Q-3I!"2ah5UVY+[+peKmr$%JU9$cYJRVcH9&S8LV421L9I(FH -V6AVDq5J@Qd(&lXK5CL,2qLLc2l,KdHS8$chKMKpk31qXLRC)JlDBYS50NHBeZL- -F)38[3NKe*+#qQb(ma6JJ8JG$"J4C&V)N,@[X4-(,@@-'&@"+mmULi%4#9#rkj8M -GS1[(P[#Q,q+k@'iC(m$QHF`%)JaY[VSLajZd5&pR4bGG"%'c63+(H[5L`X(&@U' -*Jd%N@ZSpf$`+!a+4&4-J`XGI*-&"q!b1VH3Jq&`H,%#GAb-V4YB2Y(,JX,0lSPP -&',B[Q$QT5!G4CTr8dHXp2,L8R6f[P%`DPiBK1Jpj[ZB5a6E&G88GMU+BLDjq*GL -TBeBZPY)"mESdRB,Y63ifQ-aUSK!#Q1d9J!Df'#8JMD&Cr#5i$*-TE`0&p!5LQe3 -('f%551Y&@qVHXeB6,"86VrIQqmq$CVQci*RmA4NHNC+(kS6aPXRbM(iRJ3NqPr9 -4bPCmZRA5pfK5h%%!&ic$rR4k"!Ui[RGN!EpJp(r'&h$Yq0(2aB",KiT)J'!ajQ@ -&JlUXrBb+Ak,YpibB5@h1JXFqSFfT1(!F0*Q[hR#%0ieX'V)rJff4X*GE-8R843E -C`9[+aPN6J!*,'*!!3&3+-T!!HkNM%a4*DVMHfa#RKRRHKJ3eY(JE)Y5`QMH(fLJ -i3eZbE-,5)d`dLflK3#Sf"0,EZ`VmSlf2l#M)#*cAK(NY#G0%4+&dK*NG,-a9T8+ -Bf8(#h+`*Fj@Y9!Sc981BUHd+-dA#R"FXc!'j%5FL,K5PD$bNET[3%5-a!Vd'[1M -P(Eb&!I2Lj9l!I-,!D'B'I+U3!)*@f*-BZ1Ld%&U0Q4k`M(Ch,KLV(0Bk5dH(!24 -I6++KXrfCfJ#FS)fCARE$,00CK%L5Nr9+&@,bIq$N-"B"[,%TbN-1K,Bca&R8AN, -&$j`"2Z2qA'lp29PX%k#9ThQ$ehCQJULb!m9mIX'P83'5SkK1T)6D#`GP,aaijGD -e((KlN!$adk5-!`pCp#f9&(J,*TGiLr*LbQ`k1'&$a#*NVR0NaL'mGjiAG9k6fG[ -[4[eH`69Tk-2+0e#mp9(#B141cLb+1qj%dG&(iJXZQJ5MhB*4'iUT2J0i8@dC1+U -BX644f,jS,I&GBM"X$"&9C4['[NI*JJCU5L%KVllN3Y*&"&3kNPi)MeAHM5AMT36 -L"V*`hCA'k!22FQr8[8BN-3UY!m%&VDp6C*LX2%mQ`qZ+T&Jmb!5ar&q)4FKNjij --,ab,i&Q**$aYBS+Ma3b0Y)P)pY-!YRAjUS--m6c*`$4NkG5%l29K(0AT5G`kT2K -aN!$hK06Zhm(acGR+-"dP%!&CV#Y+4**MSFSHQF(2VBE`D$&$P#e,3#VdC'ZTkmI -@Y6i8`&%9"D%3!cJcCZ-D%*&D5qZJdJYEGBC5VD@%%SF8E5l"Ie1HJCc4+mJC'N, -+4#jYKD53!0a+JNRHVEKBLI9cST0!B%()k283-V3#fd'-BjpP+,6hA&"S`hK*cqK -)#4#X!L`ADJY"FVHBLNF8@*d3Cj'"H8r"JL-&ldB3`EU@R&%4!'"heK@jEG,VV!Y -4-8PEpAZ5bJ,-NeaV#Ba#++4%i0+d`k3Pm,')'#I+5bQCljE!KX'im9pZ#8lq!j! -!5#G*a`Gdi`!A(p$GB8*N!Id8'JkbU6hLS$,h(TQNV$N-B23"'Z"05[lVcYjYT#6 -&X3iFQmA(1MT-(N4*L+0-lQj*%*2ErckE'M8aJ`bA6[T`Za[IZBf0Zi`E!pLi)1d -SYV9jYV@aN!"56!C*%pX@LQeY4EcYVdh8U)(l3!S"lB[0LMd#,fB@[3#8h0LNBQ, -M,#(`iTV$F%J6$I!#U'q4`!9m+JlUa%&YI&!R(f3ma+(Da#(&lKV!S$cJhjkQPd' -!D%diE1X1fVIpJeCq%(c3Ujk&H-%pNFaH'LlQBe)iKV)#QpMDi5l8NP",&P#$p%L -6G[CbDNPXB2*i)e1(N89%p)Z01S8h-V"Am4Upm'DCVqrX$FSaYdS%@GXA`3m,Jd@ -`PJqj)2IIZX-kYhrBBMhiX0GCh0lb9cLKF8+PKS1-r5Q"H9S0Uk1+J1K6Tl13!0" -da03rRdM"XAK[)0YG"C*pM+-bCKd[KkP'R!#fkrCh4Z(3`d&1bM1b-hU2fYh1`*4 -!GXEE'EeZ'TEJBCdmV&!k2Eq8IBN'TQMJTEF[pG+")Q*M#Q90HVBccHYiN!$Bh1- -F-V!jV"#*%S(DZjJd%+p@UDIfJ9e6@S30LjR*Ick"NCUc+e$d#T0CbG*N3h)JQC% -mN3`P,bBR*&FR@j-I*1FRTbGR*pFPqq+fH('m2(iJESRlijr%Uq0(ii2a"q02a4I -%mq,6il2Mkq*p#9XL+e'DD%J-*$)5[N42BPTLE@*1SMea6@*@BQjLC53H-89')JF -L!j'-L#r5%jN@@4Tj0[*ZC&jN8H5qb+V)LV48fVid9eTMQMRY8YVaY*bdD0TVD8q -RGDAPT8e2ZcPY45`9+iZjBSfacE&,X61aSl%*X@GMlE&VBV0LFf-VGmGfGqiHfHh -F[@PhlZiAGjrCIAThpZjPZmGh,pLGYrZUhEIY[RhhLP3m9CMDPbT2(8aY5PP6Pe) -R1[[8hq%R1q-PYpVY%pe*h+d5h6HjDaAGYlJl*,U2FlG1G"rNVLkk6h1h@h4rbGf -)k)j60lC#G1G`GjAS2XAGHdAh#HiZ&0erjqi0S[XKGpY&YjQlFd5hPEYV4EH&Zj0 -&pchZ$S[Z61jq*EV[F[Hbk(CaYd"dhqIZQ1KqbYf$S[YElVD*lJ,ZPSRZCpa0LHi -(e%fV%0hr`GheSMZ2ZlH+lMpaGjESrMrZAL1k'lMl'DCcm4-PS9kL*K)!$@VR!@Y -&Pd@F0PPd@DKT`k,,BNclbV$9(0kU5Jb3!!aV#2"MlJk*PbbJY$V4j5")dm9@fCk -Y#X8!&N5D%Pd1SXJ5-I`YE3Q4fH+Sb6aJZZLZiHjm-A`32mrbm!9L1`k1b&1'lCl -L!FX-6Ir169&aKC%TNL1k("#4iiB$T[(`J+(TF@iD-c5pbNdNJ,mRiI%QZQ(!Hca -!%`#MB836!!GfJJ4`P5Dma-eLZCpcpcl4rB+lLm6&Iq6Z20&PMj9i9h3CI422'PK -B65`N*Q$k!r`Xi`%A$8)Cj!(9KLZ6ZHP&X59lPN5Zk$)5*MBCN!$PFajq5!aJMjh -B)aKRJ54-S[X5Gq1LqhqT'eq*kAFdaZ+hL1kMh*eK11C41LEq!d26@QibHS#RZ@Q -1SHNrZ'QTS@N00edd02dR0e8,Y[iA(rf*'2#[q*R#!h,&!"CqI*0JP!-QlK6$Ma$ -5mh!5`,m3qQY)(AFBM[`RDNT@'*VQFG-UFBd#m`Jhh@GSBR4-cMGFqb8hD4k!@8m -qC4M!3CpFCQKL,j1-'TVDZDP5,'mDEq)@h5RF$BMZ%HjZ&YfhZGXSZS2FGBRZkpc -G*lU[FGFKZUp59c@*lJ6Z,KGG$RCQMETVZAZr%-%6*(aL9QNC)+1-qNad9h2hFp( -p-hIAL1jrFKHUF04mN9&F`H4rLL`Q*$T8A"dA`U5-[NUmS)`R9h4SUc(4S5-2L!Z -%##laiMr3b4)GBX3N1P5-4MUr%hJTm,B44+P9Ah-cD!09#8BMH1()1Z8NKr,56#6 -Z8j',j155JCPVZ2'Z%mLd2%l)Xf"*Nj'S6$`9H9(q*@lJ5AQ%6$P,9C+[M[29)LM -LQq'jqS&k9TQ9Aed&,D&AU8ZU4je4%e5,HJVG%qSD1%diLZP9UP*0KN2e4@S$1XY -81cGHTGD8$DPINT!!-CQ$b64-RR!IaHFTG`mqRlXVm@PeRm'RfAd#RrIFPr&jehd -*RdrGIR`qFe[aq4rZcIMm2rFQI$Di'r$*Far%jfVh)AbZFCIMmlGZ(Cp&lRhiA1r -Za+I2ABM2BRF+RjqiB9PYJP24Y"c$SLASYr'%LVXmS0rRb9N!mGl&NJGKUVddHCY -DNl`qH9pbCA*ZFP9bAAb2'Sr(NK9aH$,9'Yq6A!SJd"([9Zha2HK'9Clk!U+BS@D -TfFNeDT9DV*B$R%`PLk(R5%qk--LC(!0JD8j@*Ih*,j,Mb60*0`$-BGlJ"M!,Sqr -NDNb1N!"(a@3D*L4%mM)Na'a-5)b6--R"C$)QAf(b*LBNaN&-AX6N,I+SQ%c"K-6 -i0LB@6+$@-,NINpFa)6'qKNNT*UpL-S,*8[+SQ$b156FQbc#aBI)S*R&-eL)`+c$ -j[jJX`H4"-NR$j&r*Sf+b"T0l-B'D6c8GNp@BA)r*RmQMB[)d*[-`q3p-&Q$b,#B -YQ2`BNcQBI)J*#D!,%a,!q`+*EK")p)q-42q6N@JK)p&rBb5kMj&S"L24(aL*EQ% -NqL-Md5T'SMma%Yh1526I'BR@-a,Ga%LdMT(SAaL*IXp)Y)54k0H-4#Xe*%V8554 -Lp2R8&c-0UAq6aZU*6J0k,3XANNS&lM`8"L%!Qec&'ripErJMEF2iVBB0Pr''mq@ -'mIQ'$5H(4l#KQ6XhFUF02qAiUF-2R(1&GEF6'krJ*Af0Pr4$AP)&,fNU,fNLXp$ -%,0Jp,&`fX0$-,2`A`B,&m#V+Vrj*[(,aCm53!"R"d$"Z+L2eJJPZQ!Z(9H03SBd -0I[)fEa5(%l-%,5(k+"`iPfC5T5LPjqR6Q1RpC1bL6h'Qpf1Q*V@81dlkU!Pd6Fe -p,-U$kak,mXZ8r,#3!+iRGA3d6H`*(qI*E$4Pmm@Rj!@9MH[$@JH[FKq,rN8dR-- -Er0I`DCi8Kq[`DMm'ED+'Zrj!4T9NPJS4MJYNrRH"c#d#Q@F+C'iAb,a!)20["6* -r)*!!qAma-Rr"b$b2NIR['*Qr`mMm!dEQEc!bcf*N[SH4H6SMmmmCQHpRC2i9)r- -rF0$Ibd&r'`IpIq@JRme"2jH$rQFFp$H,S$rK#DarmIPV"TAM*DAHR4Bqa"1S6U( -*%rmBYY&NcMLLd)ZaeA,Hr"HmqDfmq8r&jM&@Sf48G0,($ZVl"1'"9&2XB@8I$Tp -$'%Z4J`LR9pR%a-QDfS6qVf"1[fE,9c#Y*bIlFh6VR0f0&'em'p3GEGjIUS#SF+k -qLBfiSpbTBp2)+"clVi'bpDHKkK2Qia-R`i$XFe*m(9If&RD3!,q!ZK(&T[+6aq1 -mE6D)'CAQ[8eahp%lhJ$(e69&b((Ma093[9JhF8l'NClVrY$-M[)pfiBM8&93"iH -6Nk9h-Hm04djIjGlh81A%,Z@8aZF62f#QZbBZ)#&5iHp4c&$4B4[23M4Ha9+BYF, -CU+qb(!+m&C%*RG+FQ"b8Ji$bF5X8SlP*bAhUhdIDc1i86Aq*U@ie+Xd3jQHYH'' -$`fU6jGY-+)*MAhCSC6-10rqa-0@*3#1$f[#*%D(%)JXPRc[52Cm8mX&T8@,NZQZ -L[ZA&-AFXFp)$f98U9*3hbEF5,jd`-BhVNCm-$NEeL(R--SE*6YI1(hhRY`Z2GqV -cJrmqA9Lr(J6[N!#fE(hSP%'&'-ch+majF'!'Sc+U-NG6eH9G'!a[Xm-(B'UEhI` -5c(1cmA-&2h"mhpc'bJK58Q9$FjDeIqEef+UfIB0q*QQ$SVQClA"8K+Z$V6r#P8% -dE!McJ(%bp0f!9e$[hEm!DPVk,2hYViG89Ej"T2dB`N,YAd((XiR[2Ufk#pU'RGR -Frb3jZCP"KJ&He6L,RD```P4Y*UE#KkcplHrlbXPaBI[lZmKX1%S1$k'iSr*i26Z -1VQer(ii&Ze[11BXm+RNUDDZ[,@DRidlHU*3f!N'`rikh)3CKF(SE1l4Bc)iZqY` -k1BdRP9-85F5456-A&p23!)CbG3-INR2Z+*cZ3UQHGq"b$06*bDV(UHM-a5kT!-$ -h,V1f56,8I)+L9XJa,&mb1#l9Y[0HjD#*`TL`UEPH%fY(`L2BK5cB@IeRe2eB`"N -e!aZie!cmh)qI@IKCk"Ad+C1mD&p-&f&%-i[C'U"Q422HCXlEU,4VJVRL4M,BP30 -ZeFL2*)5`L4P,0"qMeiGleDdHP@ih5`E*!pl6UZC$k%qfRQ#d+qk[[@(BI[1@fKZ -ZX2,pfe[f849J,9r#L3XMLl99,DSY(M'A2km@2BM,eTGUT6)51$HihSH!JG(4MIZ -JLT'mrI,Q9hRE''rej6BB@&5$JB[-`,5lcm!hET%-Q&EI!32V@E@6*%$hYbr$cfY -!ZYI)N6-G!Z2%KD6%fc2)'rMVY8&E&D!0&`BSHc"aU#(J-lkE!Be-i6Am,2-U4[) -5dqea1'rI)&mdV8H8,JF&)SQINJ1HRdkNEUJ4ZL5&f,5NH5Pp0$0NkH$JErfQ)T! -!`C@kT8EJC6HY4q!00LdRX``+[+Ee,9q5&jAE&RDK5UbQ"f&#$29c2iGkM(*5Yk5 -a3"'fde,ffDhrSk%SI)B-riA#LXZlmZ&`BiVChcUKSBLGDI1&eJR1)K)%UeCTH(! -cLK5mbR5TTp)I9$PEEU1pa(+,rIQ#04mY@(YP3*`PK$LD)6mCX'8T-Hbi&*PVR+) -3X%@E%0Nk&YQkB*(pB)m3fA5+MQiPY5ECVHGUL1qeTP83hl+Qp@5Sc1*Ej4%IMVJ -V"+AF&3eT,-3G'KZda&N3DB#FN!!el9HVd9RGDlK@j3f!ZqTq)C8i,Qjf'CSEfCL -p#B!%[fap3P`0')4bA!U&(0fcB0DeI%Q'9P69Q+BB5iL(!#CFJQQj(KU$N3-k!&V -JV"l+jf-hAS%0#'AJF-EN@1)9'DRrU#QdqEG$-BJ8fETYL'`YLf`0Lfa*$C(4%C[ -5%CQqAC(4YA,43@CbCpm&)N1c)j+1b1LUEK#CAN0N5eKNki`L8ia-`L(X`SI2)(% -H-460f6#LV3c[Bk$K5ri8dDGJhVF,Le4cPMXQ'`PdhBD!9YZA3d$2XXR&#Xj-PlI -`9V3pXTILjQ%*E[#!,`&N6DGAB0r86'U-qPV2H44j!Sb6acZkK0H-N!"D9(18-jk -aC*cC'8%QBq(T`jS534D4B0"+TVbXhU'p#iE+rHeG-Z[MJMHEPS+L2dj&2mahf1b -A+bZNjYh8l#lh0+5iSFc$X-YYmhDSN!$f-#q,d8)%%Jb4EFq5UVViD5%`+$-9,lS -KUQT8iY*r3c8bf2iE3Z6%U)2-%HF5%-!Q'#EPcIj[jqarRCEpHl,c2DFUF6b860M -RNR)Z4([LLL%l[aG$68B`4)!`+6Qm3cVIZah0dfX1V3(dd%XA$)8rp&ic!#El06C -U--#(D4I5h6+&T-9L#cNiT5,h6$+1K1@',9F+G2X+rUcNca)),kHPNd6BqNXf+*8 -("B[$9!hK*UhZ&k@h5%EN&D%HXePM3)UG3DlT`5#A%*QL6!AU&Q**p4`q'%i(cb( -aX1IUI!l"Gd1)UZ!*M$dhTJdJC6154H1ah26%pTN'q@McEmaHb-!HHdPmpV3Hdlb -p9l@`5G@k'$e(4!@2-pXIV#mMj!5+1eV1bHE,dEeMl3pkNMh$T$j38h"Tcb2LUpl -I[KV9)U53!"$,%eYefI2U95*'hEdPlD[j'*IRQ'IV9IcfG!m#f5XqUkEhL+dd#V! -4!U%U(B1m#B2+*0$RcL69$G8NA[BSUpLMV%r(Si!8SRNV8@(B+J03&0+U1NMA'pe -rKpk)0d6c`Uhb4LTj5$Y`'ak'0dcrXPSZ2''0493VGCA--*+&aS#"PSi&jr0ECj! -!ZVA@Smre#R6p2a,!5hE2'XYC2VehqYKcShL&i1E0Q6PR8L$L`JX3N85LDSKN2M9 -+P*6,5YViU"8iq2[iqC&fT$N[%)ALC5JA9kR$SmPZB[86cYUI(%X@5U9#DTk@-@M -X'**$@V!jB2brR**UpTAm8RUJK'"lrJ9X,`aQ%DJ9!N2+!1*fKXF1pk,HCc0R4AX -imlQ&2cIcCbkfZDhPQj44LqaSMLIML[(,cL#eVV)J)[A(-CQ&'CA&5T!!+(,8Qj6 -EQU6(IkQ@J%(%BP#F[3!&m,Kp0SU9Te$G@Zd0Rp[[4DI&ILXPdPQ&5HF[pq`eYfm -!NBQlrmjG6[,L!2`X`Xp#r-c#crhiJGSjJ-NQI)lM4iHhM($a28)1eG@djJe3UBr -V$jZ60RfRj8bbfp+D,'3LJTA)$b##1SMFJ1bJKG!2Nd%Q,UK%0ff46+0NXphHI!@ -[X[P+SCIXJ'aK2CBaaQS2qbMlJL0+ZbmNc5[h%+#AMF3*8!NQc@@8,9"9PZBm9&e -8!6A@dE9(jNlEBV%hEIVLcKC+AY-&$)@jm`%AXNNSakC+FXeA)`YEi#3[PVIdb0* -T(QAJAIB&!0Ik-[*hj@YE(#4'VZjC2hhDJQKeQIBLKNTqD#K)B*d5C+(%16RfJhV --McJE(++-A'CXm5`"H%a(iZ#hCRm4+pe$TZ3R4iV0'4"&P)CB`XkK4+6PM,1)RIU -6QITXcJlM(814JNJZ2VN49!IbdDh)3VmJS#pX388Hma#NRc%63d`)Qi@I$D3U!!V -8460AaYEIrKNh[dBI5G$*JXSkE0'1,GV&i1[`'UU`l&rJCj&RLqZ`a3r3DHIQef5 -P$XN(FI%+)j0,c6jmj@mENK(qa!l$m@XbPF&**!mb288)&E,$UDmE2al%'c%c8$U -IXN-!9[GV@6b4C'JM4FMm[VHB8&G484NB%b#KBN#29'9r)%((H-qf38Gi5K4J,,S -k0&aK3P8*HcdX`8I!lTAQ0`4`29XQ[MjUJfVXBQe3@!kUdTEY!B2IYHI"klAEji1 -9@aJ-cT0JF21ARS6H,D*T*!KiVC!!##5*Q16dPG@&[qj4kPhM0B%L)Q"B&6F3X%j -FHLfG5a9#5IF5UD4Ebh6B8aieJ[@)bNLKX2e-*Q6$Hd#ZQ#18+PmQ,dS0V6pp$JQ -*'cklR1pCq!F-rXql%2bR5`,dMdR3RlDS!I+,4*@QRTQZ%hSDe*mcSRl6*a-hV)` -daNZ--)&&ZlC#1"2&0ICq)!Zc1JD3!2S!I"5fp%"jJ4r#UT!!hVjFb3aQk8["D[Z -R[l3afISS#981G'N$XfX-c-E!ad@LAE+dR04@D*83$1Z@6-VqT5TI0Dpa!cXj@Jj -KfeV2JB5rdL+CAYP+)-MbeR0EU$"E6*9j8eAH1(EPV+p8*f8bU#i!K(p+4Tl2EhQ -HbEJq9Zbl@!m!68Hi1'U"mq609+%k2-PG,H5%[9&dVq@Z5`qJb[-bh3m5Mdk[,'& -kiBYE-Ve+E+[M$DKUSm2@XTH1mDef4S`U+))R9-'BM*`iV8MG2%FLhBS)TG2ib8% -hJ)PH3K&5Rcd'T38!IQkPJe&jpdHY8#-+T4FUZ4!9NF3r[BQ+M@5H3%1KUTiF8ql --BdH0)kH6P*a+2QXB[N`1Kk(bpEc90"HTUmmQjbLd"5PR6%,&KLQb8fB'GHqF -ME"#3!"9qN!"RjUQXB)+FmbrR#LE`JLUBN!#+l[J)%PZTSN4XAr1Kr8@NAJ,9m84 -pqmlcLqBYF#DhR#SZ)kHRC46XkmM$5BE9A)RfSFJA8Cm6"[58[H,4!,jeQF%AZI' -UjSFX+2c`Bd'JMVA##@E6)0409SB5Z(B'h@Q)#,+*a1lrjN6UBYU!9I"AHp6YfR` -0r*,!*cJkEMjMH,@(+qaIfIbLAN40hpi(96-X#VP8(&+'j4jNjAmSH(`%c,IT*Eb --,#Pd9"253Nk,Y!"D2Sd#b15*VY%G1bY8c*9KU"CSJNcH@rp+U5Grlf[EP8p95Ee -`"BKC,$Z[0*)k)(Z6,r9!(`l'-)mU%Ei8YSQ"T$*43d3de$S4"B5%Z0,aNj@Z36L -'93iKbmpbPaN'mL"qZ5CBPETRfd*#9qVQ2!853+-Pm(8UM',m59N3C*E5*(lLq%R -J*i+I0*ZP*8BrK3m41Yd-C`M*)a"@+-kI#(pqHM9prT%qm4C!0rmX*def1CPS*mF -,04@mAmK@ccMB)S@fAbQU%$p#RXVDJL4j$0l%02k`*pU4)JUN8q`i4aL&3,L86RC -LNK35f8fA%I&R)m@"9#Af+9DpiKh)`N4P0ZGdSH*Q*6Zd'9B$P+NjKd`fXB9$%f[ -YTDTm!XM*-aK)a&$96`(DI6dYa)-%F9*fS`eV@ZXam`'B9je"e9#F+V"#&EF2bQ# -J!J+##fq#ikHe5#4!m9I6@SU5C'8ElI!HFI[m,3&l#k)GedS9kElZKiJd(UHK)pE -,Ed'&Hjd49)H$*jqKmjU"R,eYT*Sh-@SB5!ej`3e0!iB'`m@QN!!h-TJ%m)j,&X( -NBIN`cGP$FBG8X8iAG4TkcXmLlZDK*UU#$8J3S8DCYALMMHfY8%lS-[[aD62$1E' -pP4)1cEH,D0*@4[[l3jb4+hARjRSIkJ2S+6KC@bmG&CPB(3p9)f)*I*QTiPqq!bq -C!-T(m*2fpAG8,L+rJ'Vik86!a--R52N6rViYNA&h6+#$PG5r%pVSMc#k5B4Cl"a -+255'Z#3#Xb0E[)KG*er)iXf$eVeK1KV93MP5BSP"Mbd!pA#Qd0S'H[L!4r"i&&" -`L%qNl59XSXLF2RiCDS%ImCY"0(d%$J-Fr))Udq"SZJBmB)Af8!+V5dU1pC58($k -BqIhD%kHUFdqGHZH9d'ErVQ1lUTAh%4GB@G%M5+UP`[#!EBp8@EQJME5m#)$h%B# -a80,DFPjlV)8(5dU1AlMTDBp$5*-(D*!!&GaEaU#5l4&p!kPiSSKH10JFJZV0Npl -+Uj`*hb&@aSA(Ni#RaH$DaSChh-9#3CGS$,d31ZD10%+9*a[4XHLLccp6hj2jrA- -ppE@M1FI1R1fT2pEc5Njp1NZ@#fk#8lFXMk$KC,@cR&99prFfVD5Up"d[8GHh4iJ -q!Y,i5Uj@SGbI[ep"E9%%kYdqGh34JddVI5QSjcEC*lV,(&h%RQK+SLQb(ibb8#1 -q8U!0d,jTC5J*4ib29*NjQQda1BZRSUVP4ASm$5XT%E"+*d1qX9e5m"(KJHL"3UM -DU$62i"5VF5KfPjh2Eb2(4GdG%6LlRKK5,HIeSVBS1D$)iX)VZVIh9'8Pj**a+[I -XLCb61Gp2$amb$ZqUp[Z2HCcK+Fr$($$)#K%d)G%J&di+dq!9,lR-)ir)DLe*aED -E'J089B'a@AZdNqM$#+L"R*2Kf[T+pTRTF3%Um9d&*dqI$E-L)l!,ij`D$3)XCIC -#Dj&9N!$MS0P`)$NX&1Gp3"(Qb#bAPjYGCQLZ5Qf12KlG(%9"8dE0a#!91!!G8`9 -,b@ZL#PNP,Lp"&Np+&4h5qdK90UX,4Lr"hBa`,,CjjbJUX-VhCm!CEDC5@I[!)*B -QXTc0Cdp@R`VRKiMIFjiUDlA(@5((jQ#m%f)PC9eCSE9$Y)"VlE5!+a*mQVT#,'! -99C1-Rm9"LfJ6VrSidi6$I+VLT#10)b6&NSD8-lC*bHhkG#aT0jE8CULq0`X+$V! -Srki-kCE1BF-Lr+rd$*bYVKF#cQ+QZGSPC%-Nj!3a@5N8lJ@f+H4LSj!![8b4XXV -p3Xa6*i#TY#hX2$QV3A11pbTBkXhrR6mAVUScSA4,G9m,YUK@i1VkR[V-NkIVYa2 -ieA,VLRQrHH"AV%J[m)QYc6XcrG"[%YMKccd[fGTmpPcSe,Rk3(fSq[[5S5ka45b -&S'%9$&f@a*f+8X(3bMCcH6"$hG6X)S#N*M0dm5["6%V,aYm%)lRjSjZ9E6FBb$e -emRLk"hmL0rMKJYrXi"mZUAR`@cKi9`%IlEJ14qqUV0B1KbT)%am13YrkN!#*'4! -)mX1$@N"F`%!R0AXC-"AK83$@im%0eY1MLiMVe9Ajp)JU(dY'T$Sh-))`Z!4AIU3 -5+l#V3(AH#)Bbkh01Ri9fRpk6PB&A+Md&N!!Hr1JNBAj`%S[b2"j*,P@lZY[HU16 -MQG$MT"6-qh#mjZ1CI2LDH$b6Pc!U6)qTJiN$5I%hlY-U)4ERV[!p5mZ%RfKE -DSjCmQ#Zfm$cX$*)8[+6A-h*1KNC2RcaEII*%GEe36XG9!lDm5"@@CY#M[d!K*M, -HY5bQ2NdSG(fY35#MPdChjSjD2)idYF`E@3`jV-m#J@j$fb!U0Y,9f0I*U-EeG9) -9A2Te8QKm#*pZ9BG2Th,L8kB1IMe$(IJkP(ZT4R`LUZ(VQ@Sr3+5i'X)RJJFHD3( -Be-)90$N)D+,#)AD[EU9+Bcf2mG-RJA`Nl!p*"QKBr$M!f6Cl(mc6BPbahX25e23 -86,K!)[0Aj3FEUAN"#6$4b8b8-42&q-682XYA+JXrHkKL`U9iM5S(4kM+`k@CQ1S -`H4cM#Z)kNA`HqB1CAjFURDFk%KB4Ab8$Da%8V$SQR9UP"93&%i+k$%Uc2fk%DZ2 -dKb&Ua61)!6TX@Bk"U-DKl(ZS8NSRTmMIHZpMRL6IqpK%LCQ81$3PYX[DlU%A$%[ -Rd"316@hh8)Fie,&9KcUfiP!($R9Xpe#6106%P4AHdD%A$%[R8"-10@hl8#mSlDh -f5`4(frQD9q,[I3`#4B3lNIFq&N'AfXlJP'&`5Lar@i-GKX%1`IDf"TX-JdhHbXA -XT*,*dHpR8kN)Cif,+BUKYCA"-9Rai'eLm#e8B,F*TCZiY)i[,@%&ZGUPGH3"qeS -)"D&LY*[32q`Jj)$bI!SZ)QC9#+,Ml6SjP%jllf-Q!cNdYPdPh'$5'XU,Z#(L'5! -E8Ti"*6$Z2@#[`+F4d3TIU3BBMD#f8VTNZ0V0!NQTf(XISqU04Nq&X,H)+PcEZ!V -A@m*Cb&M6#$NTUS'0(8!!*3rCqJ49e@'[!$'@Zc,+Q&Ja-'3iaKLaV'p'mZN"pYD -8QE#Lf0EeY'c$iVGaQDkd2J&`iSd4rmKC%!NHGk8k)YbmJJ4P%0GfYd$PaiHD0lL -+$*HhJR@STHJ9c'GT2khI3X*j"CNRT([P!Cd#'#TdD$!VJK),eT)+4,LRBTf3!1R -#`(-KmiBbVFlb$#ESNb,JdXDAie"Ckfi--9'C6+AY&G1Mh'fDG84%3L@S',EEL6M -hcrCMXFC542e'm#QPST-Lhl4LAS)d*NkHYEf$ifaKU[lUBBlQDrrPb,I0D-3,Pjm -U00ZBB,)0NX2*6SifV3$"HE'pDHZC)E2SBl%$la&$q*4Q6!Qm4+E`DNEY(#p6hU) -)60IKJ@YD9*ZlR*3%jrCQ@,#%FDSiX*c%FbHL8ZjXAZC1FC,a)&HMlYP'+[jbQR+ -(C03Fb1p(eKdK![cdk1`MXirmA4qTD5#P40S390)lEGddUUEhrZMXDE1RI3FU*qm -Ij8'4E@dchH*-HL*K%NkU[M1PTm6bfmajC+kY43k5mE@H%0(AEEPALQP#$YC',D0 -D&ipRdZFCG1(,TPMPPl[X&IcTidq68,THFCLU@SXB5'98VC!!"3@p@CLS1iX-a#K -%HR4[&&@ENU+4M5)LK%6jYG)fUV*bRfic%K(CH(fI!$1kfE4CmibTJXF['dbjH@L -h4V)5Ja`&M`F0F"J83AK*BAH1#"#Nr%G"Iir,i(5B90'aL'Q$+[*@#kNjI-L"`ZS -!*B400hjD$(N&MT!!)Q3S6llGD`T2&Bh8-)ARaa)L0)e698'J8e8(QF3$Y%,a4Pi -%+,C"1KCS+8AN4U#m9Bemqi`U4c9rR8c5TiHmk%1c#FfG+U*&p0k6D5KSeM&K#Y9 -@G9!8rPqe[NS9Ke*"J1lIH,Y#fESGc9ZSQDVRXRXHZ!N'Cik`%"iH6b$I,4`M**' -3!!NTlh+0&AL,j8+TMl'#EM&iGJFrd"482"@+VA5Up!XHr8VP+pA95"KIqGeSEkC -p0T(McTd09r+MPJd6Z3B2lXA%1#Kk2mM%1Kb+cbXK8KZpRLU,PqV[R%0hGY)`AZ" -k,f%1%4YGC+Ua5h1#d3He3`pM1bH$V-r6TU4!QVSG*Sjk!1MrjdYNEUdGc80,X9N -jElqbBkJIrq53!*L*$Z)A0hZ1T@V1"8JXV`K!D*3"Sf&L'STVKqlkPZIb5ZfbKd5 -DS4'CG5Y9S@E2B%Fr-5,#)0'9`54PN!#4"8'CLFYHNM)UhHa&C5q(3)cZXXp(F0M -G1Pl2eVq)1a#Yepj2@HYm[Q#M#c6F5(+'SP%(4Cm8DF6Mfi1*rI#LjD2d%!@TYN& -bXN'G'fp['a3*!"Y&!0MY0C-!l$&e19K@r5-ZL'J3FD95*STiB)@Bc%l[q"XclXl -a2-aDde[VMq-"p!#bi406X5H4f8!ap9QUdKP0U-!DR@j8pA)@i'XC2X@Uq-DcDTr -DKmp(kL1mcP*CH+%V(Cd40D+Rr[+1Z*'2`1GKpE"q)AL-`pSHj349K"08XBIHSF2 -``@&S`Q(Si$"dbMMT9Fa*,abQ2`*Mrk`4+ib9XqLad16I`4Q849qB&GkG*6h*5cV --bd"RMpSM"B@QFP@1MdZjm!(iJ-mKG3LI1P@(38j8-A8@98iG3&1$DN"R[pU2cLB -i)IXZ#eQbGb1cKdq4+RT5#p)f2*EJGTNmc%bLdkJDM8bLJdHQ`'HcfSb2@CRab9@ -jIcN)BQ6i5BeKX2SNXaTm+-#0e!AH@4qpDGETYN%i28$5IHSCkC8ZjkHIP*IA4$8 -(-kHkj@@ZAKRCP6qrjP"j`0m[paaJ[PX(M-R,GhM!jhq0!clILJ-fD3G-,0kU!fL -S59lN#UJM4&4*Ir1V&SR0jeA-Z)20CE(F5CGN*UTPQ*c*hD4PVFCQDN*&AmqVPR$ -ab22UFcfjY&R0HAK8cG&h`Z2[HGLXRVf!,4"kVJUd$G)(JpV`8)LGF[N9blI()TR -kD-lQ+PE4GFQ3!,B4GA&JTk`!!#,IaiSB@p8F-IQF*MH5)Zm@QK+$iY+cI)QLVD0 -bZ*Q)MM2lSK3Y6kC(SR%1)PUH"8&b(a&%b9$'-*J&`qCFFq44JZhEYH)@dB8YB4X -5dA0m&+AA`JfGL,"q0Y#LR[hBElGRYV#bK(%-fZGM&+TB61#-@K1L4cPE5B3H`9D -Ip[!""'aK%l$85#ceL8'$ePiNhc1)Y-PQK$m+Qk8+IY@++LP6L)$*jHK4'*C@&*Y -VTik,b'di[jUkaLq(S!*C1#ZF6D#3!"K+aVKl#+!6MdBJ#RC8,A&FVmr*1C@MRkh -8G`ac"-(1bY!V2CNpH&QlIcm0F6d2B`BmGFAqrIA$aqSjjZ2**hGijc[c$6f2HMH -2Jc)K4J+jdK9PSha%J[*50HF$$+VQ"e%LmA*@#0(!S3`qpd$B0(PF#RXH#l[-%e& -0hPD*+RMRN!!5D4Mf2)L*L4kQ84jK#)B+cF5-eI"kJk&LZm'!DS[X)b)B"MJB9KL -#J8&S3c#m'"3-+l4JS%AFc3!iGZCN6ZNKrGcCSr8P2FrIVF!J-*H0qFN,dd2D,+8 -+)I!)MXYNp5K6mm5#6**GVJB+V&e`b+jcp6R'[C8d"`Jb&*JjYDUF!b&-+V"6)&+ -KqMDU8)FG+MYJ%L`*Ih6d8LL)pNEq9r"@Y)@rA)AX(e#ed3FqlS8Ad6DU)!)E'jM -Df5'XYP8&E99'U%h*HVYKdffc4mQ'K%FS+8dS&4HP8#VH&8,Tp!T&frKZ#+E'FJ$ -8$j-"l3A(TX5aMArGB`e#Km%89r3K&fmb#Ti8C,,(k+`KRQ%Ym)9$#TMq"5@R6Gl -N0&fME0jV'Nk1LHRa8ib2&L'+$4H-B5+NE*R)E84Q*a8#XX#J)lGCU!8G)3Uj$#X -FF2YXQL)#Q66)E1A(4%cjU(+HP$[qq#)0"E`LS3&)J&&PqK4*3mA'Q!S#JQJ)*A$ -5"B5@D)@abYUDJKlAR,Mf@GXJL8DhLXFM+THEr$Te4mZAb5)K9LSfGFqa0Z(mh*! -!,!TfaNU!`+`P&aEjm[AAeK&MmV933Ci5l0PUESM'&`04VN"kjZ)U3Nr"MXY`A#Q -pU(RG!mLQ6$rbiH%bJ`6Y0hC$8-0Y,IC9'"Xlb!P2ZGJBbN'mKNjHp2)q#L4GU4S --AUCp6MU#B4ALPU8e'G8-3`fL+%2KlH$SpCPIQi&18ihY'i-DCLjf'`Q!*0cZTHN -E8RNAS&@J"H-e8ilHIU3q![1+3RSNQT(VZQI!3,0LC&6I'55i-el['4`&*aqC3Ph -X&q!&"kb'G2Y$56)[J[FAhP"i`@k!E`jqX*5X#lbG16fd)L8AM$ME%#%#*C%(a%@ -&[DP,4jC&pD44,*i1Y[c6)+-8(a0l(mAVHV"8XH)eEqGVLlbGIlYBdf2GXcr)Bk& -JP4lVApUhll%B%#89YEI6*Y)6%*!!#'q45qMQ3B'C&IilmK`e!e55F!b!EM$5Zb) -4'cX+-6E,c9-[eN6qTX+D642l,QMbN!"Ij#2'',2b#VIR!B"%9MNeLc*1HZ`fP3U -d5RAjEM0Akjq8AVhT1"0J(IhjM%!Tq4!Sj-%CU0V(3dAM$j[J-9B*$l,F)1#E1fb -XKS)HIp%KRH)eJ5+Y8i68L0MD*,044#QBq'&SdCeB4aYk%eQ5!1SPB(3mJ%(M'RU -Ehk&NNa6Ha-[TSrI%!icHh9cXl)9J5SRa[K!M[-Y)`$"QmrFXm#5j'Zm`bD84NMq -RLaGQYc+Vddd'Xh0TEN82%Y,p3IEaH(Q%5+"pLmS9(MXimX'NU[cM!4)546eL33R -[F[TmKZAF+4Fcp5P2XAUR(,EiqSGk9B3H5m$Ye`,(2I$"T'-@ei9EGKUf&1+C'[" -X+BVTaF2DPYlS)dpKU6R'RU9&ji#`q*j+eFId4bJTj%%Z)%&IbSYFj6D1*%$ce&Y -F%MA+m8+L$)+@&+P2,@HN+`3B49f64)p-E'qPKr8GSbS$++1U-1Yim!1!fiC!VTM -3pQJ0P$@4"`p'@@28MbkCKlI)-"Er@j&a)f'bdiJ5B)XbiQiU-U9AY#m11JB4"4G -ipLk$!Q4&963F9DH6`mSkqG3H!r"9A2!i9G!IMNpjk@G["l+rQ&`l9iIjRc*@Y-m -QRLb+[EJ`,lR#T4$&PLS(Z[Rc6k5UTYbhl)2XBiYj5%*2,&h'JLZQ`VEFpL$%Hr0 -,%2QGAR"26d#8a8E(&'#5(8rJBCP6TE(F1VJ%Fm!*J`Q*0mHD55382+42jr&#-Qj -p%)Q`h*J642m(*qRGZk*(NcqCqF'N%hYqpMC($(ZLD%BLH2$4U#Y*AZ$BA+#F!`m -+$-1ab("`-FG'e("%+31@f2ERXe'rJapJ&bc-(84Qi%"Lh%5!RLFld4i[#"@GUmR -"KjFV*1&6%N6hQ@9&EVmI%i"i*5IaqJa*2%ki'j*iA`8PmISm5Eb%6'D2hR5['j9 -I1P'c1)6dNqDA`+bIf#YP36R`)'Bj@P,`,+AkG"r5IhTpjI&cqLZ9pF-K@(6@(bF -$Y,ZAr"DC'N4#M`S"JBjaej6l&6N@kH"#1$0+M`@KE%E5&LQG)FD1afL+aa+Td`T -ZqbS'5IGi`,0$-S1XZJ!J64p`NNU*1'Rp49"'dL@,fHr1-Abp8c[-'&(iPhHSB@Q -cYRd-26B!GI1@'T-Bk6@1h[3VFh"aiJ'&EUTBl1e-9BBAbqA9qmcE"2[R"'meYGM -3d3dGTk&MdU*pJN4P5*C-cGY@XL4pBE'3!&hX3-'3!&3NKq1H4#K9JSK#BGXE!(b -*'"I)6-%!lVlbS1LME5564()a3J9BcH4LqS$GKBhdB,2+m3GkE,mqmFUKqqpCC`m -#d[b$GfpEH[L`Aee[%-@X'NRIf,BDJJ[NQSQXV6hqVlr3#`kQT0*fNRi`J8m&CRl -aQNirRS+ab-0)%XB9C'#Ch%q6'XbYP*RFPd4%2`K5B*Z2+d`&i(+3!+Uj[Tb2Tep -q'6r8l@EJYif-L$f15f!+Uji5fIJK,m&&C-DRcT@F1(QZA[I"GK0%1L,1(DZZ2jP -cB8E-$GU&rI[&MH#-Q"-Y[kS)*JBXhbG"cEPp@d%+`G*A0G)Qk5AFP`GUSMLU2cV -SVB$Ea!rdL-T68p1LTQ4k,kia["!E[+`K3C%iV!LC)d85-c'&"N9V(JZbr-(Y)ZN -C20"R6E!lPaa(FXEE`k5G3aZ(%'ZP08)8p$#4bQNG)h@()"HM)LJ8iA&iN!![B-L -m(G05-JVL"jRN"6U60D+l2&9C#j9+p'#6d`R4H,%N3&5hCPAHV*N58dc'lJEK1XQ -40h%#D$h-hX*S9Z"Tq)'HUXVRD!,Cm!%60*Ka6q-#[T6UK$0E!#F6L"(YCGp+2%6 -,F&!6(YI1l6-f0CQN&fPbX[#iFNM2bkmN!D9Tk,,R`)QcHBRDN!"ZHAhL%QBMNRk -LcK0i"fU!XK#50IT'--LX&ETCAP*K5&e)X[%@QP0RA%Kq@EGQqq5ALQHeM%3mp!% -b2f-f9A%a1*Z5"Ea@#DG'HY`f+HhZA[!JXi@6MXUk&1)XCa!9NAXGR1$piHhD9*d -3K+dpmM%kYih#fb#"EVFJq)d'X`Gh5G+9kG1&afdM5kX'Upk#8Xm982PT"!p4((K -*0pj+C(A2j@1aKr92&jkS-&i8KkHmQIcGB8mDGQfl@#H!CHTL!PMkG%2(CHJ8'dP -c`H5Vh`JjXZ6,L@2E!K@0dCj-B*Sj8IGlb+F6UlC&3!YQaljdqq`%(H#ki`2BU,K -64KGb3[@52eqSkqN69rQKd635iME!JjU%hR6%UMN#a5)d!qBqcc%J*IVc[BGi5E9 -D&P$cm26!DB25aU1'*4U1XAF&(E2`JUXc*cCX$b$b,1fahmib&!0pQXNB48D)5pd -'NG8!H)6kZXMf2+FFQKl!f24XqSX,&Q'6Z`D!,B6I0$qG4IZh)FE#G"CB+PiH0#b -`E&X!RX'4mDTY"-NR3@c[[b2fM%&3Sk!a%U8GfbG+ema'QB$cf*25q)*0E8Dk1'V -!p141,a!GFT!!BQJF&*6G"3AEd$rA)1IUTZdMclD43PE[D$$lAh+Kep`@ZJ3(q[D -pcEE&jI9ip[RT#,V-Fa8QB0X6pGC'&KJVY,4rd9rlf`SiJkMpEC-SdQIqYZ**G)- -pMPHX-0@)b*HXI"bQ8L2H#*GB"eAGLFH5+18(i5'5fNKmqU5j4cDdCkRk5"ZFLC8 -QpE5Pda$*FSXH,bdk9"38EA9'AD+L$U$MBC[kb9YSF1%4*`kR92B429jMU)Z'2Y# -P(NK4m@LD28MAkB'&ASlZ8qN*5HY%YjbVlcRaLUqNj,'$,b-4FH!`%K"RMj@FifK -rH[1#H(Ai!-AqPr6NR$cEF`l0*32q&kS09G9[hAE(dYhZ''eh6'i(!2G1$bJc2(V -6c8q6SFqI$T,4qrpD&0i$m0k254NeSM11MM#UY$Y4,0R#"h'T%mDA9M)Ea)23MAL -51eNdE#S+-MbQ)S&ek%V!,RhM6%QFMrk0G)%Z'ArjVq55L%#fII'F6RFj2hY`DjI -60&YEcXrq2e[1YS2RY!KU`h,`i)Ccmd#qMp$%2eJe1")B'5`2d#2N2IiriAaL2ai -Ee)(($8B$'#r'-$Ipah[J2i6"bJC2B'iL(SAUlV0l5Z,6(3SrL&dm4Z*F-c&!Nf" -fUi`-MmJQ!mX1`E,M0fIjl'r#-J6mNl95`$pCZc8#rXRqlkk!laBk3-!r'C%#rXR -)eJUB@IiZ#RJV@0BBEU2M463E(f`!FLm`dBkq((6Xem@aTmlGc52RZ[rk4fj&PU- -GZIQlPAN`5hpPC1RZC1hT-IEGbD+hKV%lpR4%@MDcFFI6adq9[($fH(fPYPr$XCl -[KqSa[(IJQ-I*Xe3+J)8-)%)cATj4YPFG,%lNT#dkBShip-Dp9!8*4EcST$T$)aB -aHMFYV8SA[68Rm0&0BM%[hkd-Vr%Fp&cNI*p@C#"KX,-l&QLVr`+"DUB3dD&`I8r -eU@1r3F$frZ8FZ-ePLJ-&5FdK(m#Y2SEJ+m6MC09"H`F1H"C"@(N5KS`[T"1',`L -9)dhH,C+U2NBGGjPXr"Q+jh8j@d)Ta5VXQV40Hdj9RhUK2LHpAEGUdqATE[T++,6 -G66I+4e[Pc0`HJX0m1j0,(83ZYGZ[LAi-4h'QT!ED4jhBpHbjG$D8#(AB+CZ)4(b -JpZ5jGekSN8@0M0ldKfafYK+ML)cY19Vj9k1[maa&3832m`@2[9mh24DpjhdNCH# -djId&aZEcRKIYl[5'IpUGr["2mfUbZqVbeV%ErED4hi-[Pca6AeQI!l`lGZTirE( -62H!GZ@XkQ6B1q@2fGqQ3!'2"Ke$L!)mp$p-d*"iiBE00mbXLNp!4$fd,ZimKN!$ -p[FI`rc(r-81fYPd[3EH1(8Z2RFkYBZIKEH5@AQid&6pp-S[P4p6Y#d6Cb9HhG0B -hHY2Y143e$4D5frGXacbCm2Bhr1rTE*LH4cYQb05PBm#S#k0V6`kA90GAKR[1P(K -cSU!Je$)qUZLQQ"h2Gd*d*P,iBYBH"SXmE+Y-L%IVX1dGE4RS25YP4TUM$#cYaH@ -6e5qFr2kjNXT6H2#Ldp[PbRLe(&Ia,$+RMZ1C#qjJ+@3`ajIkFHQ9bR0Rc[TkYX2 -V@6p#0Z!hS%ka,NNAECKNLFd18QC8ZGepH-8"4K5aihBfI"NERRUPjflZU'Sk'rR -M1[E1TUhhf-mDrAA0FfZ+rBj3k)8l3L&kR1,f`HSB(&8ZGNI)!DYqiafLd3[E4#1 -eY@Md3NddLQm&'Ve`pp(SK@fJN6'3!&CGV`A5eQE`f`LN&bl)FS0)89're&Ihf-Z -(REqVlmQKA1HGFhpc[,i(XDIR$[b0pYq&8(qm*(6bE%l*fGU3!(E'bbHV!F@Fl$Q -98l+VZS4q$TF-N!$B!3!!,Sa"4%05!`"6E!p9$88d!J"M4Zicljdl$#-L-T-4%H' -JU%LN4'CN,Vhh$YI8h%pQCUk@SSKLXG#&D&DQlldcXKp489$4h%pQlKq5QC!%$5k -Abe9QDQUZ9-4pd8c0c!M(iIHq-q#iRrlUrc[RlrXrhpR2Gmi"'ef""-%6j*+8d*a -[HcSaFBEbJ2aiM&9qR&[p5IHR1eZX@4l"%8*hFfIEHT'kK-!kT**9I*A8-*EUY5h -@MUdG+eT,aUk3!+qZ&1@AfiRdT%"YrX*%@92qSqRiIM9*R+CjE#Rd(f)brfrKC0Q -Tc09LE9hS9q)arRhKE$P15H0I&RiKVeIqU5fcZHKmFD"@CRZ#rN9mKJmUr&BZ9NT -jIZ%%qEBb9R[59Nd(Lp[jN!$#SI)$bRIDIECb1P`FSGPYpp-I4#ZI96K2,P)@D!f -f0a2Tdq)Er*(#UA+GFT(2,(a3IP&j@([*GSC1%FpaBf&c'3P"@fYE4`eLJREHpJ* -Y)cl2(bp-NUZ8'TjEf&mHS$bPI@kVTm2%K9S,@`qk52bD2eXi4kj34QNPYNCdM0L -+MbYF,$G6f[,4K52PMXTiVGEQThPLHbh'YMZ4[Lk'mpF+ZmUVPD@m8f&[HBRbYKC -U@d8lL&'mS2"(qGr+(pSQ@c4Y,'CTRpNqTVh%jEaRB4mj6,R+@aIq+RqSr+DpE(Z -96K4RD#GY4qNhiL[mpm,TmLQPR4CKfdar%MrL2aHfP+mTNEa*i5rb'Z92l9qfME5 -TZ)9R&pjp@RjIbG%qX'fM9m6,fJ(E1r5kq#kr9*JTleHkDjrBrNElLRYiYm,1mPl -P)1pAq*Em9q@`pTlY%-d3Jl@9YK8d3(b1hbX-NIFT1rQ4`K[b9Z@XYXZfJkD,PGa -5H%'@P#$Y8pX''LLUQQ!c8BGI9"ab)CApLJ0e$dh)dVM18rJaITZ[j8GjSTDS*kB -N(NZmREJfNEZFXHBd6jbf,,Q,[MlPQ+JQ$e`[bBGFNUc!f&`E+1,9&%Rqh#2*fj- -P14DQ'ZBCQ29!&Q(Lak3+3Q8`!jG9UZX(aPDU'NfV9$edID@U%hZ-!TP#V*-#"-' -Cf5d42NCX#V(,'1r!@%Pf3V0QP[aQ58l4*9Ph5V)V@G%QI8klq0m1fKDk*M6b@ZJ -UrpZ+qN(%C[r5`"84rTV`!@rkReGIr"V"8Z8AShEl9eeC(Zhri--e%D(rAP2KAa% -GhU,#(qD2N!!hR[IhU2h)d@)h%8TI(VhQ`c8Yd1IeB-T#9N6dk**@c,Ym'KAUM`l -dLj[A4#b2r[m%D@S2T8H2R[4Ve#P46I4VIUGI8e3Rad`Jd53lZ9pMeZm8(8lbf*I -)b%j0SNl4l`c81-%k49Pc3Mq4K"iX)BJ8bjeB`&LBP!3N(K3lU@EbJ41SNh%3B!, -9+KNS4S(JJ$C0""6U0+P1TT!!-J)a8k%Y(JaP8URA&'qQU@4*&pM-@3QY38k+ETa -b+P!U@M$R4C8"IPV%#G*24E+Ja%"%K49T8@83%q"&9!cd#CSSVI3TS%@#Jk"&kUq -8LkJ3j'-[-XP!"6-4`LeHB"#+4"AhJS1)L!5#+CL"K(Ur32d-9fPK5J"ET)3NRNT -H%&Y!Z&,e8SL(qb'-HUm1JCVp,Vqj8R@CZGqP80,8X)NS%ib)rkU,Qp(GqXd1c)# -NCK2KNJJMq%@r@C&GCY%#&5l1f&8cQBQi*$`ZJBK5D)+%3$3Te'8L+p&KMPHZ%$! -EiZ(ke%!%I$59[(KjTJ94*R#BK8U4N!$QK5J5!UPCB&*qPm0,'9a&0Ym[%b1N-`I -K'j8-3r$)4A#Rc&`+!5TA"T*lbR)B0JZZ*Il6f#kE`#"Hm#SJppijf9-aN!$TKBT -l-[GTi+HeVJ3%)F!VcVJYj2SdA4B[-j9p8&9#AB"ILkH@8#Skr,l0p&(MeBrGeR" -kBN49))N!EYDi)XJ%SlJ)4MaV"MeBF%K``58iA%3%cN*2*j,HlUl#EVc'c"EJjPS -P&33,8bp3`54le4%iJXU3!&iikB*22i-Mb1!1*&c!H38*5S9ZN8!@K!X-$1YR4HJ -0L'GPj$0d-1-R$BLSiTh""',mISA-NAVBP#ZLkSIe,H#0!%c`bJ#,*+B893CkPdJ -G4%aaN!#&%!`GR*P+[m*d#DU#P+%Se-qX305D,M#CH$`"!4U+#$8!C[%#B4LQ3fD -LD#%&Rp*+"q%AN!!b(4!PH-VSL+I*j)0Q#[CKF0!JTjqERGaPPR*FR%b3!2R06Mm -@IV)J,5MC-E06F""4N[3J*YjMei`9$DX+&P%&#k%5#a253M$63r5C`'jb%*h)bLl -LY"X%%M0-(RYe`DZ101K-K'JM1RcN#%L96Qb[Nkd&k2R8`PD9&SBbUB31"e'+"#X -'3PN4,e*B)q9%5qJX8PK,@)4m!NHJU9H+R'))ZH"1i*eSlTb-JAMF+6)IiN+`-!N -aJ(%38b5J@[#TKDfm3ZJiL*6JMGJX*pN$Ni9a%&8A#(L1*KFX6,fAh365'%fQB#m -K2&iJ#'M1VJ*p*++$BT!!dFCl*38#4k5D98i+JpQ)Y&fl*Q+9rlaPpHj9HhElSp4 -0iEALMGTGZm0AE*@ZKSGZM-"RK9VaapTh8BXlMH'eEJ[TDX5'j9'K+k)hESli)#) -bG2HraAYZ+fk9[mSc1BL-L2N8did6a)R%()&Z4d``DE209RQfh3fRc@jQdVkD#h3 -,Q(f5(0*JPBd+c%UB,D+F(Sd*hX+-B86!6ZH)FQBIQ'bBlU,PAJdlBR"S2-NJBrB -4dpRMMJ3LCRF'p%kBY)1a5A*!2c((-NhB(IlaNXK0Qk0Al9L1ZQPdD+3BP$U&j"c -6$6%m,'*cp**i00%e%lS-9[Rl1,,3[Lr'HL$@E@%Z3[8kXHICKC@l)hE$&4'KNHl -1Z"P&I'(5[Pm&jQYNSAf[BVd6ka#BcT)FR#r+4c,&S#2lYN4Z@K)CkPpcppCU[+` -6`6B%*KHX*dAjaQVaqT(Fdp4Xh4cKYT((,Dhb['V6h9[)iDEHT-fV`f3$@@McYQ( -Ya2`J6$3JPBTbGJQJ$E4DfL5a$3Q-fV4NHILH8(qN[)Qj%[kIG`6bl@%+*2RZ*k) -PTjc*"N@&4Lq*##2#kLEQi-lD[!,)6iEXF*KKN!"[*XSjjD*kmfE2FTS#h$GkeRD -60UXDNfB`GC+Ff8k8,eP%abe5JRT,8TQ'[9E,V)hX2Rh6jSJpQjEZLG`G[558!G" -QRB+)"I2,-&Q5I$e@$-STMpqH(1PDD(6%ZFh4DjB[LFD,8G5Qk#AVL1**fU`m,D( -+G%5-A"-D[6`mrYZHIdd`cQhb,HjZLQ3D+TH[fEJl)Mb-CEN4XGS)T*0C5CJMRB` -iVb9XY-S*f6"ABDL@%#`,H'&k+c3bG*9laMJqNibiCVTPjKQ"R$-#q@e%Gl,34[6 -"HMAQ6@%QD`RBXi3q9NG#8`,M"S(aQ0PSa-`lC+-IR#EYKeK-r'5Kr9!"1(QBRi& -CU5AB!'FHc%$Vk`RcRfhYm*rBNKa2p3qR8TZG(l+e(i*CJr,$CF#)`U3c6"-YBB& -lBf+9fr$6MFN269KMd[G,Q#B`-kah%j+)aXFmh4"A+YJKTGU3!()'GNJ*`-l%T!* -'dGS8(3r@H!LJ'laJKbJ-E'Gdeje4hqQm(D#0Z)G2fY4BZl8TZhQ$MMrhN!#ZfT! -!aLCY#$Cr5%ZB59SE`'QcaCV6jY"$510$TQT$1IMcVI*3&mafV3h)DS2Xe1DUp@b -ET11K$6fM$F@"U0BQq)KEPm&[6SG$`ij2Kd1[QV5K&*-3XY#'BQ1'IS)j0QCS%ke -0Hj)U6Gi8',4mdjSpUhH[#89LA,TlHG6Q51*HTQ%f*SYKTNVbkf'LT8-QilJ3Y5P -m0li)R,FXh4dH'J(Ti@RDm&,TE1Hj*aahH*df(!I)eGSJ*l4*%ZK#J4i3+'Er%@K -IJAB6D'1"9JMd4i&q*G!5KZf%ecU"PJRd9i'q,P"9S*X&fTp*[b[3T3,p6+#"![f -A3!F,e-)dAQEKGEDq+Y#I"9V(j(5"ML4e@fTP5P%2U45S3b5[N5Cf9bh3"8`GT$m -@k$('mc9$h5I3Pe&R%1K-[2Fa[Dmb'1-&ZNLJkH`L5+$2#E5h3%F,p#1"*JLd0DZ -j,f4V'c[2!)'mTV9L&0X&QXFJc4,S+B'Q#64!S+m`4C-CLB8#I91JI`LdLT%5*Y" -R"(T0S"m+G+e!"`Rd(`aeN4%(U1(am',CiKiM&-cA"IU@3,m6k!f"MKAS9)'qaQK -+CkjrRY(d#b2)+Y!iGPU"R41E-9QJ9`6kRN$R-j!!#U0JP8$EX3dS&QKRJ4S%ZNH -J(S'H%kM)2$*%S&N#c@!(aPlHCRl[`mif3U$Y"CV$VKFa@Z(pCjPh*JRd+AD'rJa -'4hEQ8S%f%ZJl!XdAD$q"ILr3S`)G)p#*$0J`p[mL)k@'Z3D(fFYbc%lQeL-#2F4 -f#m$Z-MS!qlIi,,+#HI"$GXK(Q1K@J@i6D(FQqK(cIMec(%6R#I5`3(H"G,Bp-G$ -&FXpQYNqcQC!!RkPqKqh(``*Y*Y$2"4SLd'rB!D$#)G!c!TdL*0l(U@,cYir*+mV -H-UqKkFB&VZ#9mf[kK1@@C4`D@0AkDT,68MQjT-1U8GXcp`mjdbjL5QckMVN9"9& -cUVYr-[MFp&0'XbT-DYYep@MlP@dMkTT%6Nd,fIGPIGCR`iVl(Icfr-4A%cb"'kB -ekl4dFIRP!m-[YV`f-ql)cYNY'NF[,1fm0hrGM*1*"Nd@#fYIhchHH[Ip@@rqqDq -RP`@Xq1H!RX[l2h(i[EmmrqZ(MbGIN!$qfqMYd$%2A(Thk%XrEAkibpPGAhhpilq -IIE,[hmEqrIGAQZX1dhmk[KBqm[kF$hjiijFeMkbrpp`ARrIkq+PRh[VVS"GqHlP -05Y#RrfM9HmQiqkkrmpf,2hrdi,%E@lr[mFHQ4EHllCQ`pTZM4@H&j4'28C-GY2( -@(H3Jp2L$d1-2ZN`@fU#Z@+-E'C3&-d-cSL([ea50pb(60Y-EGHjY%$qK34Sdj`j -pib$8M3HEV8'$bjN5!"eFV`e+3"8IVI6JYVj*!`"rLdN9c(jYm(l5U)PbTebBH6# -$#3,p6"Q-hhV"@12VU3B(Di12D-DUQlXPG)ECaV#E+L3CQb,KU9fE9S9'mB1KNCZ -f4Ui+M@4VSQli,DS`JCY1#bc'@4CDjE'%j-AD@05R"U0@1KD9XV%0QM%$B(0K50F --kJm2%E-2Alkc`V-h%6!f8KZ,#XYBd$m@[F[BbjUacde+EabqI$2R$'hXE-fBPbT -p&Y,HfMfVFK'CKGTBSpEFGIh%@VrE5d'qAmY(I6JI[A`qkX6jkl6QCFqj[cANlpA -b`l6QB9GmapU`Hdh%SkMXj@IH`X(HQR%qH[jmp2VjAj+&PMmFke0@2cVcr+PDFeq -9X$QV%Q*#VCN*`6j9(d4YqZK4%$'KlSj%60KKdLBJkdd))`YY3J6@aCLIJXR@QQI -lU-M`8G(HHL-Kq2JAcPY9ibI-2llq-'%Jp1CCcdiBjPl[)"ID",aq6F$V9ekDEkh -PP3,9'LM8qI-%VAP6dA,*iJ85AlF!Epj",3rl-Ym,rM,3U2CMfdJ52"FHYMZb`Xq -ZET!!aCk)b0h,)pD`#rqkH*,Ge6Af99qZq$4Y@[-rD3(AG*1@KpHD[+PNJDi)%9e -CV*B(pihh`"4,mTmf-V(M-B,FZTT)5*BQNHj%EhTS4(YKZ,``A0Ti[,Z04piBR`i -BGM+adb64dYV$0"`qhKmIH4Ake&pa9qql5rA+TG-1H%KXAMH-(f@94jHPZQ&d#A( -$q!*-8BFHV8KbdaJbB@liH5'4J"Y'ZG1kkG(3QZS-!XQPMFBV`ZJ1-+dPqBmQC-+ -FmI0!TL6$#m%,B2AQTIqcTdF2e%EL5GN["kbbS8D8Ijb2#G+()8D81`#@!C9r!pS -V!jTJ!jTJ!jTJ`aDm+mphhpHPD+dI%VL4X5CY*&V`N5V-%8PZ$'FDN!$JQU0C-q# -GcB$fd)#A0X0!(ebm94N)66B[A%0VT[fY%mrj%&djFS3fLT`@fp*m!8ll+Y3'`j! -!j)lZai$8B8"'-m$G"M55"QbcB52!qYfh,rkd$a(S+*aj&-im#T!!4QALc1A3L[- -fcl-6Ka+i#qbdKS#f8lqGPYNTJEh4hYQ9qREKHlI`icPNH&6SlNKHHd)lj+qpi`Z -*[lE5HhNh21,$MD(aa+hc[JQ&-'amdc$QM+pTZ2NpCF`1E8`PbiKMBNcD',cdM8% -q'A0+NRm14%B(j99fLPb2`J-YjpST[Rkea)%1LA+l3$Y&EQTjd@i*UqFQhNVVD'l -!%k1[A680M9`PlHYSLDXNTNjTkk,DdD2U,FKD22Q1C#dHE(*RB6Q0H(ha%%EViJ8 -QEA'5e6)ZM8Qehr-TkHL`LH(S@-1[4IKbV$FXMik)EaR5I3,a*)cEUBf,598j$Sh -e1*aq(%lI1Z1[ATk-1qNNr2(-fMK8amDKV4L(ER$FBNQH[P58Tq0&qVI*--%`qf' -+4ARL$0%b-CKTlR!6eDNjlpC36&SZmPJZFPIZIP"iaNGK[mIJ&pf*c0d2&DJbjZ+ -6BqiN5Ck4CUFCGSVhhYpR`r5$L4(Tli)mRCbL9%ZN)"Ll$rTrcE96I0cXA)&j#-` -Rk!L-'mKVbhEfLPTTNY2SqpV[I[)8d5VrlYqU*HEC+GJ@D2e9215`ihUklhVkFGF -M"09FK1[II0HrZ9m2DhYd5k*QeTh*RK6AXV6eX9hLMK9ClIG[Ik$m[V)RLTqTIV, -dYVqfEFH54XeDe3bSrlcLkaBp'YkXHq2-5aGIV(Vqr![RrVjZVE*lGILUd+9,`TC -rpR(8[k-hEI`AZUl0eckkqZ'VIrhNEh[ha0aCi196Vj`m'M)hrHb4brfk"38(K0c -$r%Efh5XjQCFZAmmih1qYlRdlGf[rHYIA1VcGUAHIRPQp#RkFm8h62j[mdZkRPMq -hrRALEp0rRr'0VA$5IbErGpSrj[rcbq"lErQr$jShDm323iB1rmir-2(E3B2(jNr -)'cpkj+L!l+#l0kjNAXUjIRK"4[I1I4qHq@$5i`PYM-d0LIcrV3p%`93TEIKdjBT -pcqhBYA2VP[HhIE$rh32[((V[NB0H*pa4iL"c!T99Kq9#i,J[aY#jQ2GIR$[XfDI -Q@"Bq[HM#9e1R2"*i[!mDrh'm$aVriHD$,qCqjCppfJGrFII"Q-AMF[X2HfV1X`X -A,AKkkL06M[2"66pckNpl#$rb!1L@2bA41fZiaHpifICZ2rS3Iqi+BYaqLYX[8H& -hrX9cDbGS9KlelrM6Z#2JJK1*GGdNVpcKkM4&0c241bJid8eGilee+lrjIT@*C-p -el'3bpk$-NSX[ifPm2BrPAAJF5M!9F5[',0b2-9%2m(*q(brM6r"LrJb[jNrb8T4 -[m[0DhTChj#@m%@r'@r%D2S$Ammpj"ImDB`4kB,[I4-'j0c!DjL@-X(U49r(RqAR -q!NV%rTf[3qNSE04Z[TU(SfaG+&r+Pr!`[TaraMrQ8IcI2*T[`R#aIr&)[SC(m-h -m'[q)Aq8ImPIjArNRr'pm,pq$AIqr8I!b2m9Ii5G41#Z%*kEcXr`)[mclm@imL!I -c!'$[F5rk"XrQGrN9RX-cq58)AHFCr$"%hq,GH9rH'5cYqHZm+hq0Gq"[mdkm0qr -$Hr)XhSXAm"rj$2i0EmVrj%hi,l`GriQhj$rce[aA2T(raUIchjQ!$8@)q#6q(ck -CrjG2irrJmrNrqCHJiakJI)rI2$k,Mq!rm#&m+"r1[q-$mIZ@$q+$q9LHcbI`2$k -HMqBMq5K3RSd6h!A99aLp1D$h-&m!QVZ$eVlmB6k62mL6q1-mJEIK4YkF'hLLm2p -m&K"44-$%+lR%0r"2q8UqJZrMcr%GI"IIbEIb,Iap[Ser`2IcGrN"rJira0rM"ir -,![mh#NjR!3`GNVR+(Gc#,r"!2Sjr`FF!1jGldIhjBTl,Kr&Rq90m$S3@mUIj)SK -qaDIb+I`4X$a@&QM-rhM-,%!%E$ca9PRJ#p$`&Cq0hiPCi#rih6S,M!'eid"[Ie" --k(d@p#j#&RJDe$i#HQqC"ELfNciZ1P*fl%4`(54Kf53@&T+3!(D&K28V@9K!3Q` -P#FH'N!"3j#,"rL8*a9%NP'Dcd*Q&*La-*H&f,!Y&,%5`F*Q&eLcNNq"R3[kf,-` -RSABl#hYCQ%a#faBN0+TLi4!*c4MJCZe)D&9-`PT'U-)![-qZhbdPi3!,lm5ad)b -%JqbSRc$8ANEdhX%NV'D+9V0MKc&(K-eN`8##c"KNJ36,44)ZP,(`+JZM53KN$Je -N"`[U4d)`B`YQ4!6[Cq%N#icdB#BD`!iFX)i&jUB!aK``Mi33*`X0,%55N!#qQS4 -X4NVf0KDBZZaK*0beXm#1HTGYf*AZ,-aQJ4hebK`5F[Da`,BrKlNXam)#fm)FjUB -FYXfC'eNia3)$PTP!`U9S&V*BQ-i#!h1*NA+GEHee4ZMe95b`if@3!+25$$r,JiH -CK`kAX(#1"HDR`ib@lQGB#'5"HD8lJpbAXI@0BB&Tl4[-!MYVhq%XX&0fCRQY-f2 -VaRDX'f2VaQM[eTJ&4R8hYK[G'&[l!b``UYXc!1e9&KL!VQa2ZPDc8-%#fiHZE'H -k-Y(A@"lT`"4eZ-B#CB%4e)(jY32,C@phBU%P#b`IG@,(km48G'+le)Q4fkQ!K5N -Np%jM)Bb&G"Bb@'"TU$Fl4ZmN%[S`&AhB-IU`p0'((E[2Yb`B5HM*dQK2YJdpf6E -dC)I[bA*Vcb-XX,65Na(DFb!,,-ePXIBJLlNMLl86@@`,XeLHbQ,-@Hb3!&Nc@'$ -%C6(![9Lklm95GLrQa&jXHhTGCB'e3leBcZSeP`9fT!,QS!+@a`ZBL`YBGLPJa"@ -`22iMfq`I5Hk6Iic@HDaCjpeK@TTec@2@c6YJSXbk6Q&'i,8Jbk`R3bLj`U`[ffr -@ddV-HTG!Xhl-DGC,QTMe9MDB*,0H)m"%``6$6$EVpABBA(`1KXm9Q&8`+X`9Q+B -`8mak45P-!``Z+V*K*TVe&VPQ[8Fa6$h-1TLG-(YKS,`(P*[6G0fm@0FpJUkA$G2 -eQ[QkAM&6ee[8k,TBVZZQ8ESZ3@!&&[YQk2TcKh4p9aP-LDl[2+$V@qYeIFY&Q-k -krKiZpN*S,aK@fA9pD3ZB[6!C-&0dI8Q5VSH9`Qc3pHSV6VdKd+Qr81R8rhlHUDr -&C'f"8krFkp5PE+Iq$SI""Bp0eRPaXUj[K,%Pkmi#Q+R*HR*#-SL'`88+&Li)ZDB -PkmX@*qYG`04PIV)HecCC2jD4V0ZMNrAlCb6VjFCN[H`F6'kbrN3*6*pN[AK1X[j --"-aPQ-R*HR9&X[kN#M-T@5re`ab!!D*d@,*qHbF-%,HKm$BBEMH''3i$aIikQ"d -`Z24R`R`*!d#eD6"9-)%`B+LGPkbhpF#d50BlVS-"`58!@J+KNLE*HLX+!m*D3A& -018`T$"!eqFRkJ*8`10!!%$F!31XrJc%NkaA9bAU,SQ5p"i!eJ1R0kFPkA43-'1X -Jq!BFmJB1mmEFC2f-'@B[$)KmD@+brM`BRYm(%jbXRhI#`"RRXf$bN[8A0X#%`A5 -#'3)$ajq,JB(bFeH6pA9JA,XD"KZJJ'!4!!8i4S#`U3B'"*T!l+IBZ*9a-&YJ)23 -F$V1M!@BT0VIFSr-k$h+K4drK(Yh9!*-1Nq[4PmA!p)'CiY(6"*M*(Rfp(3BAk`G -kp0J5Q)d`FcakPbU2(PIKdBm9`f4kp+)bMfiYmZKf$`cek19C(VdB5TmCiY'V6hR -d*aGlp0Xc2(TE-(F%N!"'X4kpe3L2AP2[dHXM22VR!&)4jp'r2ZR4Hi4jp$G!f*N -dMrj5L%H[!V*UY%II!D@l32bZGKjp*`MB#F6@DTJS'!"k[j0(h`D#YS&Kfc#2rX% -"MliIK,dEkG%26I6Slef&kHV49q-b()V#MhMdjC-mqQGJqQbT4imfHc$k(G9HBK@ -,hlb"P$5R+D3JSYaKB@9`6&NcRPE+8dLCDkYGcD9&'r$e,bLAqf2EmLjaSQ-lGp8 -*-XAR((amDf1MD5MELdFH59[%'qIUZEf)Tj9"N!$lLrL6!P'4af64MeAaqbYTJcZ -'h-qR3#qe"mhRLja422NLbZek93BRE6N4&`$FlJ19["CP3BZ9'qrZjh&PI'84AeI -1hbcLV85LH3V6(-X1p-[#5TTLTk3FL`hR!D49GM@,!q`N0j(l6E,Q14i(N@rG45T -TRMZ+qHCH&PlDk@LHCZFTc36Q,4X4(@DrCq0VLqP#RPE%8lClVaD6UbRfHi[aGqI -8(BbTfR[9MK"JhQm2DFF6bdSCdlTihi1Ta"k5biq@9E)E[pX05KcQLJ&PjG`9KeH -K9(ba251Alpj@c"q)`pr8i&ffmfH+H,fGPa6a@P%qc[@0#81TEl,8VZB6l$5b#LB -6Ucdirp'jqm$rk1i$0l[l`2(Z2R#6Z`qNZVZ5IZ[ZlZP%G,6phR3iL&bGGRHZ9mQ -pA1*Z*f-UGRGhl2q*lJk!Zp2#H&S*6aC2XlTBkCaB8@ib5NM(9aUD[S2rR8lMjp2 -%R"Dmf8jHPmCVD6B[2X2[,qHe1pJHi(PcJVq5aQ)h40Q5EQ+Nc"6pl9$%'Q1QBZc -U[0-SUpZ5REJe5I1Gl!'Y(jZJ5#(!"C&VMd9b31aMLd55H#ZrhX(Gk@L(bPUFJ+p -l$(a-fDS6m'&h`VG%GT'hbd[jRPMq53Pr0jBr@F,2ar)A5hK$,)D%mTfar,N5AKR -,a4+q0*EAPr#1XGbrejY0ZP1Ve@'B3KbXHpJ8f#*L9c'R'mR-D[G6YTa,CVLX)%Y -c*c,$FL9EA[20Y1j-,GX3,+0m-r0`HhB4McQcNeHAF5ZDff,HFI[TP-I56k$G-CH -60R1peC'dKHaR2lXk#NRaCRc)+$kbl!"TY&2Lh$,m+RX!8S,&T5lNRR1NZ@G&1!+ -DZrK4Tf-brUUD0e-CVHR!aG63$,,*+E(H9*C(G,HdBcbBSrSmkemJLdGb[G0%Il9 -#h6!C'!$9i0B$pFkS$26(bDHiTcJH`Z%%-NVR2(qaQ$F8m`(&[#dqja6cl4Km*c! -f&*RS)kKpq1P&ZYYLSpYL[pZLbQe4RDT)XX3T2,PBm!%2"[$DNS1m5lASf-pGeGk -,+5Kb@Z6Y!!1)a(CUiCjUNkp2C%a&B6bj1Pj0#&#D(!BRa8&4*9p@lI@SSBPA%kB -YI9+(U!TG[RYXD!*+lC[ASEKq2)PA-EE!YdK!%6`R'BP"r1GY,$X95!&P4G`9kjk -eYpZ$FhPYk6THG*k-&*,A9j[)j@K#A3*jjH2BVT@TQ(4Jr'ASSfKhRZ)56YF#3T! -!+J@eQ4Xm5hVPK9Tmd%SZ6qfL56f!d9$N6N0CDS*Zkij[B(MlIKk,jVBB3lfp$L0 -HL@9RE"-Q2HEp5Tahq`PD@hL"hBcr-CH2Xm68m!SAEeA'2kVQEDYjH!R(heXX+qC -2dMjm(j,mD[iQ9Jfm)YE%-[eF!Sq6D6[b&XqQVFNl2*Z1XMU-C8a`(UBZKTcqU&P -XB+Pk5#`@X+3Qi%FPk(jp!pH*43+2UqI,k&`H&eXCRkfV@-,%if[A,9f)@Q"Yh!' -h"()@4edNPpCcr#PIkaP8%C9!Db8[,qBS2%Qbm'+[8Na(NqmKh*ZYih2pD0(5rBa -EEDp9p8VHTCL-"R)9apF`I8Q0T39"M8M0I5#b3F&I-l-Vpak`mrA92)jQmBiZ9TP -S5TkacpU"4iRIJRC1@Xqb%p%3c-lPiaX1mHefRPB2`,bYPhfH9a!&(aRh"VVh"#5 -Ni)PaC3*2VJ+G[UY)qi9FRPIh#IIE&BZVJJ`N)ZTQa`Z%q05Y2J%*+G*p9D2lXUH -k'i*eT#VL,e[*QQCADQAFblQ6C2*!F`Z500#cTMB)'$QGQM52M'rB`NjAcVZd11j -dAk'`kf8I23G13%)UK252*6bYfKh`"RV4Ql"ZEPj)Xh!aY4%R9Bm0*cB6J@JNCkB -fkM1pl@BjECQ+5r+eGGIFGMKKJ@+@peBSYPH,q1BL[P(J+hI`Sq9mC4crV5eIHBD -El(aG'RmqPTmTiMhX[,k-0fT'`TPBJPeAb4mmb$pHacHAQ3L-bFK-0SlCB2*0Nmb -bV)if4@4f$DRM+TQp#U(fC(D&I1XNXmlN3bFR(QU+mCF9c'eBfE#ULPpeaXS5[dV -(UVX[hjRENaR*kc2)9e!fl432,*Tm0Q8*S5X5l(cZ63JN`Ij[J9[r[`,1!A$@KbJ -FD*c['`FME`SAC1XU5EDJ@-+&0&'fSZL"03VQkJVC5Ndh&G96MaY'!rliN68hPk0 -aNr,ABSbc`"UlZ10lV)$F9%C"YPH!NR6aL'8DiA@r+F-0LX0BCSLb[4)'"4MX&5Y -NqjNlNCKq[!T,(Tj+1F9l&(q-$a@kY$LHmSPEULZf@h,[G)lM9H%S[K1IH#%@16a -eC+JIY@XEj"R$4IRqFk,X`9#cZTfLr)44S"L5YEaXPhbSI*HmSi-S&ip#X9iUb4X -M4IRf+Qakm(X1baB-a)36*)GP0TPH5*13!)``aC-"&Nkbd)k&I")#YV1`MS8)&[S -4eS"j%M)"QBB!`,%b8Ek(SQR(-,`jIE@%3A@L($G(Y*aG5-NJa52lU%CL*Y8mL,P -XH@1e0`iN-QTf#Df8X`9*cGj'+ahC5iRUl!jBYb-A`b6eEPH-m,il"-Zl-k%G$VL -#)@&a0P'pXKVB+kp+kT9Jb&cT6TDYX4a-PR1`c%Q6b1JZ1Dk$U1DF*jKpNTS6KIX -F#eNfN5`jAe)bX$qc'0M-HQ!cGdKUjLNbbjE``)(3NiRbdR&f8EfN31V5IPaHLTE -85d6(T3c-XXKX1QDcb@bB+(G"jIMb38a'L*E,A@Q-8m"B,NR&i)9+q6T5aI8)A-* -NV*2N$1aLPhS8,Sk6e-0`KRVi(,%%c1%)bA(i-MeQFK`H3X00MRlRD3q6T9p63V, -F$d"L0iL1Yr))MGf4NlZI!DTH9,Y(JVPl)$!S$T3f'*L""*-JbAhMJ)(RqZi!TQq --T2BPEZTVP1619EK#JE$19l&!@Ne$(ZX-ChBV!cAG+M!-[jY#pN[Z"VCZd35V%RZ -Cf-E%cS#UEV0a#jdUbPE!EJGIqaV'ehkPT,CI"CRf%CKe*cH6U4m[(+q(B3K1Bd# -dLr,VJbA8CmPjZSk5j0FZL[)bR,*$#dRYF!#m(D)NfX&2CTQikSiV82Kf+E,0fcX -*epZGX'i*b'p2Jp6E`l%F6CC6XHaNPY41&mN-@D!6$N!l3CAD+C[JfNYUlc3XHb1 -2@(U(86+BZhFkX"N%-Gq,Q#0CHLHK8!2H9HV!e@HIC1N6`E*`RmX%d4L)Eld))a! -pLb4,ch2Xm$eA5@V2N`4j"-L@AZ4!)"F!QH@5e+`MC!EbXiJAXr)NY9GEc(T95CC -H9`K-Z4Hb9d%FD#aSKTX#(++!Z+6J+LQbL0DJ384T68bfLiirQY!BNk0T$!PrfPQ -`NG!NNL6L*U1)Uhij)-V*5H46'#D$56&!LA`m''Q5Im+9%pRNTfPS1%Ka`BZ5j@F -rFB(Mjd$#qr0!bG(k$0(91J0"E8e1qqXRN[TV#*RP5TD*-aM0[a9,MZNX18rr8R, --5#26'G'l,09&0"%Erq4+bI(NCh5h55j9*8IT**TSNQpMr+BIKHcX0Y&5JNXiUJ3 -Mk1bV4EN4LZif!R(f3k+P84-kXND3!&[C*,@'*0ND3E)-f%i6Y`Z1HMZ"8jmN16j -[5QY0mZFSjQZG,+S9b#Cb4B0N`6!JXNF9*2G@C"2EQGJ#FMpa*dAT[Q-Y4)ZqND3 -aLfkM'JC#1pY,$QF"R#JlTk)P81%dp"9a5$,*#C,&Xj'1Ke6+![ce'["h5FHJp@Q -d)mkiE$%5*!ECGN'TeLiNFFiA(9hQ%`VM-2!L&NheX3a-d&$Bd@c'SZTd2rUK0'a --1C,NI@MPd[U*MV*ca0YPTfK(K&bbH++%YM,*6r54j#F`1L-Y!Nr#jj!!LfFU)+3 -q%i%8mFaPKTN-M&aG)9QUpp0`E%Ve&(LGT$$(Nj-3,+AB@SqJPT,-a2BKLeb@$L0 -%hYiTUEGaSpiQbIdfbH5h'dZ1fm1*c'dMfA`r8S,U4f2Lm%F6Y$q6SEmNk&``e++ -AUDdLe0B'5QSYfJP(l6bL[#hqR&$E&L#q"XrATp(a*VRM1U4T[!eeA%`FA9)K18U -UL-i5E,E*dBKd3fSMG!Q@4R0T)M*'+c3SVF)!T"@9(+f'Ni2@P%Z1QUZ%UkB2J9+ -6,mN$20!E+$S'V#3D"L""U`-QJ@d!2&`2$bpE,6VU2b1Ap@Jjj(S$F(M(U+M'"#1 -$@f!Sr$+d6$e3Jh(K@e`$%TYVS#Lr14d6P!UYLj,8ZMa`eKNPp3eN*FFEF`RX-fE -*FDDHd(*Q,d1JD2%C`V45G,`dND!ZEX1b6V489E,@[!T0I98`18E99-RaI!'C2Qq -8(1FVL24j0*S[S!Gd[$#9V-qK`h@"a(-aNZAFG0BQR9X-+XkKRh+"e,qM0'J+LTf -[fdGMbJ6,fY8d"RpDB'd#p51M+ZK!8iD,&K&13VXQ)NX)R$KGZ#`j6'C#Y+Q'KFr -)cTNQ34j9bNpYNZ06P[e@aV'`K9b[a(MjP#a4ILjIFZc`N!#,(DaUX'2T6PU(1i` -@JpY5QSN1E3l0-mNkUJQH(D+DJ[j"GM8Jb@#)86,d,iZ4("JdL#5E0KPrG3T&NT1 -42YDMXBRG50#aD(kl90&a5*9a&A3NA(DX@,)8P6'8YBLKl-K9pb-9*@0dqRB&%r4 -R$jc#"+58JdSRc"-6-E'JMJ6!cRV4mF`3G+Pb0F4dY)92)XAUU,$H4MV8'b0[cN' -h+hI%+I8MD)2`a90(5Qde!KQYRP`0!$JcK1[4PjYALBl2BiLk#V5ICZc4eb!%IcG -%lK''PpCFdI&'!ef#[)!GdZD,mNXSJUY"GG9*E2eSSZjjM"R%"pBAkNK5If%+JZ9 -F%lS)4eZ(dCaShYI#Rr0%Lj*%&fdA,%)P65`A,+E@G"'L&%XAZ36,KRTfqHQVl(, -P&(DjEbHjP*q,`M"58Gi"4mH)MKeC5(H1AA@NBV'V(5&JCjANf"T&pQRV%-QaVCM -Xj$D3!2I"!9)&f9p'Ej[8rFKSkVZS$mM[4NVb!3bK4+RXGe"jNYpTL9',SZ03#p+ -0(*TS`[-Tmkk)AXB#r,)($P5fqFcqJ31R'Bh'+BB%Jf'UaI+$`6#6@-b(NRR5H0K -&8ip'3-KS-#3aj05M6B)0"N-Q--D3!+5&"N2#D%2m2f1#mBX6EXIiVXKPAJ*4m@d -#L`Q'K-PX0MB9-5EID(cBb!LB#46SHR#8aC*JX8ce58`GG2akM0(i#"J5M%mEM8q -VUMV61)F%JTVJR6("4B09pQq"m8',`6M6#f*+'fJBCNRb#6hbbQF@+(M%5+KHD25 -K(jaM56*1Y4JX6'Pr#r&8JR&@b"@$C43d@Y5&c#Q2$`r1(NE@mBKF,iqAc&c'j`A -$f+B5,5#q2d%rcCb8m1!LXRS+diG618H5f4MIFT4[-U8r%FU,"qGceS,(jaTH2A# -bb'$!CVp`S@P)0f@NXNKmUI[6IpllGIVMl&r,+ffb3h,DC!F%+ArVFq()"@ArZ#B -rcMRmp*aaij5$,)4Ib,JE%R+PcC(ATribY@rlUAmHk6hepial!38K)BSkqC[*Nj@ -MEUC$rmN)3a'8bb%'5q#[0dM!Rkf-I,PamrqrrAYj'mR'aL55Qa2qqCd[ahpaY0a -)X%I6EFE#IbBBK`Gq15A`D2[!Va#b6cBaI'miHX4L12VR+bhQ'%BII3ICiZJ[&X2 -*A(@5qUdkhS$0,63B*KJ-X`hr9Er)cVeL-9bY99A1PbfppT-L22bESM`bmj(q5Y2 -'mE1hJejr+fP+Rk"dr-5A!J+8R`UQG&*QB21H)cZB092j6MQSE-ZmS2a-0ZB`XGe -8CB9k9ZAHImmV9)c$8aIq8Z0RqbQjcq8%"Ta0$lEF#``)fGmq*bK%-4'l-d$C%Z! -0[`3d$@JG&2)Ed*m%0!Rk-dMTS)M+1dh%1#9I'3'9pbR4MK!SE"qB'Cac*#4)U3a -5YQBUp&*)AmlrqR$k[A3#'!!!(4p"4%05!`!bcJp9$@8e%3!LBqj6[lB[cD1mLFp -5XjQB54kC8TiP55XAf"aJT'N+2TVHT$B4ScF(Hc@d,*0!0i1j(#p('r,j'J)kNA& -RF-kXLqlX$M)N4'DAJbc(@aLFpDTR0M#SM)IVB(!9hFK`@!iEQ3cpr[hHDp0'CSk -lGqrR(aZQ*`9"N!!%34!%J'Kr&qBMd5KHI-XX-d'j'GLAr1[B$UhpR'Nl,c%TLHm -bCj`j9k(LF*Sr(%YT1hcY*h6IXJ)N'MLQ#TBa`45ImhY1Q1QM8[jJ@cNZINJ%lL- -#6pr1+JYl6MaGLBpLqH0aqH-Z'-4N`ijNmNPib-38i*Fc&TkHLSa6@N%RS`Y%q+A -#D+"L4,XR0IiFRrlYX12[faaYC*6UZH1MiLfjDDjYLMN1GcV)9"MpIZGSS'SK$FY -eaJB@Y*5CHiHedpbMRB604rjjljETCqGAmN1c6@GK&TRT)l0Fp@9Sq,'%VikV,Zq -`S,DYAa%DpBV(H,KIEF2h%+[i-4'bA'%9F`a!%EKD4bmdmd4UM#5,R&a&fUCNQRe --Zj,X`cKLX)q[[HSiaNFlAD,2i9dS1+`[Ea+UM@&L%61%iBJ[2cjXa!aLL!X!@$c -[pl@jZT02-B*Z,da"US0rc5['%q'il$55"IaVF)M*6I(%D+HA"(4$1+5IDDcMFIp -[L[6XXD'@bH")$&QRfkRqkh"+dpe)9J@G#56Y$0fAhP"QLTK#F`Y'(!+@eq2m2A" -[2LT)Kr!RL&3qT"p%j9cXB'S80[S%PP'T`CJS9lJcZLk!3Zb'Q0@Z*'%3h$*VY)2 -3Ua+KEGe)eUeldHYdRLPqmIEkmRKaQm,eL5@TYrZHAqI3j`biY(4L"eeVJ6laB4k -GB)&V5d5FEITR[k**E)0pAPeAAC-`I"r%GUr5"j!!`KT%!QYLb4pL+N18QljHVeZ -rRJSjhFZfFK(9%8Sr"VGbBcLj2M#QkPH3!1C,"LqYar9UKA!Y((YQeE!((h$PE08 -+%%!6)cB'%-2V34T-$@pKL$5526i$0,F$J'3+(3lPhje9(5d$-)EUY[b!-["05FB -BbC4TSah"B6Z#lLa"`CU8GRXTaiDTE)[+*EEKMir"M)9%'4+YSf3-HJ9)G6RQZ,p -YY,2X*IhGLkSM3*IUjUX#AP%I$kpFp@+*1$`H&P2M`82rdACNB9M"N!"8HNMhZaH -&95mbeQ3$eU[1+-c6Kqh0dp4`,d3kbA@&NMCFIHrIP)(8D$jjqbeXd$[V@PaZGNL -EdlCpQ$j02p0p+-cNFQ`I4MTJ0k9UhS)UD5ENL!Nfb8`Y,9(1`%B#+4e9rpJP$Vp -EDqL*kLZ-8DV6d2e,rZ+RMq)++U')-T!!&aqqTG[mP*lQ%&,FM@dalR5[$8JT,hf -mZ'8%0Q3JT9VFKX%b5ZB'[%*U82F0qd,AqUrTiJIGH6q10TdD6E@X[m+43Y@he)S -51)1"p95B*U5%8[Bk(0fQ)58B#'&`R3hj!5N&NAD-$1cXm"V-E-'"JQ5Di!V2M8Y -*KR5+B3kRa)0+TRa+*P`[MHE'Y8alDi@i&'N%N!!F(l!4188Lrqr9bkeV)F@-M6U -C,ZD%IN`T05+*e`3P-HMMJhfZ5AhPU2m[R%JX&AcB0&c[-hXCiU&$+bK-$24#24( -L(H-LL&4'E""RM@LPK-LZD8T+DLGYGd03VCaY*!(P-Y[%8*pJUdk2B*!!1eU!)@l -AY!qJFFR(Ld#*fql%i!*U4+6Chqk$Q)+%(LHNUD8Mk4AYji!ZCLJ%%@PhQ*fK@$D -3!2YGA)HE9Q!"ER'@N!!"%m-9ML3R6jKq"P#dBcZRhqiMCTTJ&klBc6'e%+6Le90 -`r6ih!0+RFd1l(9Z'kZCVQ`$U0Um!"iGMYH4Bi+$0GNY8I"6#a'&-P,cFp&')*KU -EkKBhSY[HBDjES`pp&&S'Kc1,[T'$P*lUASA8i1AmNkNrFJF8p@3118!BN`hj'Ki -iCX0'+ULl[6#ITCl-@kP[PJldpce$S(Y[53V*V#8Pq(NR(mcYdM*,Gh"4ZqFR!8+ -H%4bQ+D4YQKTU'Y6f,QTE&2$[dd3JQ-IT2KF!Ud1lCmX1G,1E,R9UQlS65iHDJYS -pQiHD,QXE[ZMmSJeGpN[dGrbPq`q9GFjTcBPDTVK$$lk,-!fmVR-(,92m)R0jf-@ -1$[Ve))#6I'r*d*-Xm9f`a%H**'amdpP+L%4$G3qk&#A)P)FECTmKP)m4lMir`K# -KPP+,%"N,YNlNR``VqD6-D#0'[4Fj-cI)@l'qplrb")3B+jTCTHkVD,rUbZH'fUp -Z'@Sr*QpSXkQTVRmjTZTQHZkSZl,NcpLV9JE[B8VY,CA#)"K#4X6cil00MbhbQ9Q -R0jPeV[fkaFHCiMD!U#m!a3H"l%QA[c#a[,IZp4f@ZX,Pel()mHMK(9TG2bhM220 -"'!8Z*Jc9PC3,Q6E[*)8U513+&MFJj`RfKRID*`DM'k"UG!E)$4J`0Mf`Mr['A@3 -d)dG`N[IhBI!A$4'@ULB8*pr3lL-)XjNAV+LEcd)N6Ti4-'"*MT!!AeBkSElp@Ji --%3-X2`5"Xp6*4(piFQb4QEBHBMG#%IBJ*ISG'10llXJ8Db%L"N,r5825&4a&-'f -N+Lf2&,S&&c+K#I)P1kBU(62-%aD*$D+&bFGRqR$",6L8i20)"c0YK+'`ELCp**! -!50`VU6(D4R)[2me0ePXC(U0*8JN!5q0bXrAdB&rkSY9#TABb'U92*0FR-1LA+5h -Lh[jMK"#ddCCJqmd)"e$KD(N+RF[Z)q&#U*f9')6`#b6(-A4l'+R4Hp%mJ+(bbB$ -hF39Q(&h8c&S''jkM*PU"C`iRj5B[lD$8mGFE'6KUAE9%R%#b[,IpDVL)S@K[Jf2 -ak%Q!*JR3N!"*G!06r@[AA*VT3m)QVI3ATe1`4HKdddT'H9*IkGeI93+9[eK@q3J -kbY4&&kG$3CTjUSUTS3Zq8eac[6iJ4Jkb5d)*iHThfQmD802RXlQH"`J`(9PCFZ6 -(If5EZ"SrDjamqaqJJR8LJ@ZZJH&f08KXEd"#8QbA#,h6+Gc9(GVY3Xj8&lh8Fha -e"d6$4EqLVZHATJ[4$e#)1MiS4B10,Ka#N!$#AI,KM+`#RB,#p'JC5Rr[#AK6cE( -Se`AE83QY%C!!PUeSALRjQVl%AA3*05Xk8k(iDS0$h)fL%,"UT!$!QP19a@rZq8S -+R!3qcUmU%bP,rme2pTCd#lZd3(0FDrQjQEVi#f-39q1j%Hj!!a0+Q-5!D,5pVF4 -$l%IQ[9Ec$iqqZTN05UB(9D3`D"S(E6"S&&h`dF`&$`ekrI&2(LNamR(P8USPh2% -2MhV&rP[K`IbZ2"bkVlpqf2,GZr3cCB($pI6A99pmlBQ!lR[jd@'MV1h`0IVVZMD -[rSQf2B%U)H)QN6mDbr[kEiAk`P"l'N*0i#T5h$!"@Pjqe#QqRhQG4bHVYa&0@+N -aD)cfj"+iY'TDC&SN9DVQTjR1Vc4iC+Kp2SMp(QQiIIDL&*chS@$[IIq1pS`A#21 -B8mZ%9A)&QpVh3Kd*5lQNb[JDUB-lJF5ZM"bLdmKdc!%4FIAjP3)YJM#,k#Pj`8T -8,TSUfKmf0E9hq5`-*Ih1j+DpHGjcarYk*'IJDSNHDGK"AA*1LH6%"3UddfC1580 -j`MLIQe)PXZlj)$B@[JKM4DUDK1'MBF2ikEhEc%RN-r-2ZY&SeHfBmYENM@CQb"P -('%DTaib16Vji+5`m1`$@pM+JQpY1c&Y$iJ!4S'BqLXdD"C9#MNl[B9QT&e9C[M9 -!)BB#+,SiE"cB(J"SGTMEZd*`f41T@$8be0lPk1$mdbM3ck-NN!#Dh6cTb(PN&[9 -#dG,0ITklSS-4k,5%b2`,b)3[NUYFP9aL"9IE(pjmc)qdcqheUBVf'`pP`L034eM -B48+2L'!FS,L@ZEdHPlba,)0Q,!L8"@Mi+!K1*DNM8J13!-DMVKmZaEDVea1mT&Z -h"9X`j-6(R3CA@kKS9#3M%*BI+rTT8hYCIem&Gj39FJ)26&pP%JSjLK@QY%$Lq4, -he,M(%V@Kf0EppB02@X3lTK!B@k'kSJ`XlLaBh!"9MV'C[DTdmIkq-(GdTiFm,3h -j0$[NdrD(24EHmkHjE%bkl2LICUYM*)jABVYc9YXpr5[R$)qZAX#'Phae`l(4P9[ -+ClKqjLqhk8Z69066QijdrfU)2ZKbB+))2)mZC[5CIBP[ArMV"dAZQCM4HdGQBHl -G'UjPk-)hcA5e1pRKrTd'H),Sj,YjHmYq35pYE0%bC&++4Rm5#)XafdpH*'3GCUj -,JC(%fVBUF@G(aI2kH,#6N!"e'%JlV1eU0hK4'QN&+k6Y,Z4U*jY`2-G(,GiIKRP -"(L!mmG#2mRJpH%r1FQppr(pLDJfQ9([KGcP%PFbmBiQFDGJJX*UFBb*q(1qZLNE -(Z*ki[AjCaQQBR)C)&3R`c1'J#Q-cC$DK!CYJa5E)E%80f)UXf)TN0Vd"Qfl&TXY -X5J-faBT0NGPb$GKb9Q`jQ@fU!GZ8&GY8b*4c5&[Z+DMJUqHPUk9L9@V"`!ZDUTN -UVPChAJ-j%J"Kj##aS(CflGmYI)l[iiAm*!@be8U6H61kdX(l1mD53ZP4@9aaM6@ -ADLe5`jp3h#[Ziq'4A+p6EkcIPhLJMUEf6d,FJY!B391"jr[l)QR4SjJkM2kDS)9 -3VIe@a5mJcP6DGkJ8dRhbdlYD)+bI,FTTr1MHICm1fdjFfp#4c"AaSjY'a,YIZ0V -f(*b(VfhSP*`acpd[hGpf%XjMkK2[E@L9h-Vih6I2-9C6MpD6C4Dcc2%&-4mVJYZ -+@EHGR$baA8"hHc6$'!1kD'qi5+FLb(`+S!PCTC0l,J(a3MK3J3kZ9eH,ka8q&d& -'+VqYMRrXGpal2@dm%AM&I@3b8&3SSQh2cVm24PKG*B'*+6@HldPZQA4)aQQ9AM! -0h,D+$kabc"R+S)'8Q6HhC4A%L6PE9R%j9A!+#U[9eChVM4RSdQrmkXpI%+1VIAK -"K8%&K@%fN!#'-Y3+A"6RX%dF5E-lB"$"Ll%A0'5ri*M$bfj+5hPrcT`if"aZAk! -*,%#PL[El#KNUD4R&R$HM#G9STl5%+[0R9haY69p4HN*&KK5F"#SBbbVDjcqI8cR --qENU4qkk[E,rlk5B5l9lp('4KJi`!Z0)2Tr),AGiCVm"1aF#TrNdE&SPI%R33SQ -HfeT9-ZA-'l@[lQ89&#e@h5Ph$$$2"RYTXfjVRH4TGZYZ!Hcecj8q![E"6TTkQ%f -p48G#Q$Nf,@j24(*kZl*,qjil6i2,h8"*$1pL`rrVCafZ3SN(-'fl,6$*+6P9Y-A -2YGCJ,l'J)2,9Tf!dZlQImeC&ID29DAb5fIp+h[FR[6#Bf),QF[&2!NAi($5A'p, -RCA1j+RhfQmX&kI-9FhPFqT`aPaG*RaI0jC2dqFcIF$dN,GGDXCf&DYERI3pQ&$9 -Xd$,pYi,Tk4X4prQXbINEJp5SY6*pZmP8H2f169!``""4#d$X6%S#HS%c9%1%e&k -qRP60ND[jJHV%%)`P8baCb0"58R%a#TMQr&jPR)kpPLVE8rkjZ&,mqcNZ(AiZ1dV -3I0Z2J65L")Dj-N#Bdj!!!$*A"JecUK*SjXT!BNj"!Y*F'9c-'CI!09F'((-@5B# -E+i13!$NRVpp*)#5P!5$ak-A0[EVl(qY6rSHJPX*UqXT3VQQQ,TC3P3'j4T8"bF` -c%A&i2j*222jER6A-H-$9l64R$VQ3!%`5IR[br&f((VKC(k"+5RbJTKALJI2mAZB -BGMa`l9!JPG$hSq&d5$m+XcqT`IP8i"8jj@lk`V30dq+5Ya9qr6(1NiqMi)[j)%[ -59+klGB6cXrV%XKqYUkF#k0[+9B#pLjTSh8BqaP@BaEp@M,3)$+D9ch(&pREV5'P -qr0l@-TM,d6(#Q#Xp[*,A9M8HU9he!fiJ25r%E-(1X+MB4P[AYVjDr00(XCc(p`- -ZHX8`23S6A2EVGr!!dTIIeAG3-$LG'ZQQLIjkT6jXB%'`+J'Y#QE#34Kc(E1IF2l -8KK4DeB8m9KTLjN!%D-TZ(mc2S6jA-p+l"HXkAkp&X1Md!a-!d(5(1E`3$5[U3'd -(k[A"C4NXUk)*,cb8`H&%,epGQ8ERerS!4U0l1i!&jF1DqQlpVC`JKFE$2#DMVF$ -#Jr1R+&6FTFlCPE0*U8eA$URA8dLF)lbGVMBTq#k&qV`'(T@+iY!,DA*pL!X%BPF -'VR9d,DEkGJ(d[bJfjjCc5INY)ZXqAP0Sp@Nma2ZKh8kMM)6JT,q6@'m4lf#T+c9 -m`9R,2Vbbik)cb6iZbaqc-X-9fI'mXjPpc*%(G-X-HIPME)CH3,iF$!Arb")HE-, -$MN+(9!%@K2URM4m!R*L,F#06)"hJV+$af6Ia#Y$V++XFC48IUrKBCB*9*J,9A93 -h8&Cr4MR0Th4+ISEQ#%$4294*qIrU"+H3!'FE*"Q!c(EBe6f&Kbm+2IPRS-b+4LK -FAFadZ'$)f"MNqQZh4R[,r0PdL+2UX(-JdqQ+&3SR5pQ3!%Nfa)BKiQXeq8XBB#Q -EN!!DKaKJUbV6@A*P*ECeDUA1#dZc5`K[e,a@!f'+SGrBSCNqUkA%UR2k-bX'F34 -rU(liQ6pSI+810%iM'DR,I!3#"C!!"Y)D9aRUHepaY"#518Yh"LkS1T3a&HKPQ6! -Bh`LNUcdRZ*l5!1LiPRNli%VLCaSUekB&Y!a6V'rQm!L2ENJ925PpT$!iGBT22I5 -Ml&!"2me#dQjJX1'`Y('!c&&!Gr8lriIc&6HLd9dX9'$&$BA3ArAQQCQ(!,&"JGN -6U63CmFQ%klfIUL0IKZF"G2&Z,K@N0-,EDUS4h[BX%0k29`eIPH#*Ma)&MU"MMq0 -`iT!!l9RfPlGYaXZE9mP`U[F1rj&2rIS%Gd61i1%TcfbMK-J`MR#ELCL3!!6U46( -d5*FEf1D68U4&#aMZRQfFkC-4RpY%D3Q3!"!C#8HD""')F,fhiB+1HBUU@a53!2` -G5)jJd6`5$$%&!HrM`cBD,-llAFEAXMrjq6e%'SmiACPY('fCkEY`A#k1h2'#SV) -P,IC,+ZDX-hZ3!$c21YeTjdLeXcEYM((VjA&pj9YH3FfVH+bUG`J!JGN9"1f[STZ -A(BqZB5!`XL#S6B-J8CcHPVr8m%YX`a`,h,#FI+RDcd"@fNMj3)Q9Y#hIkN++TP[ -NlDV&GL@r!M$h!J%Q+8kBC[2UCd-5-X2`1MZNG$Fij2$rLe"r'MfpRaa(Z[kBA1h -AJA6,ZVJM$`"!C4S)GbK5K(8rJ*(DXp(2r@%hZliiqm9-(e2SH8CJ-`VML*9DVpe -e(*S)K9SUVRUTh*haJNN61fj"h2Va')%5q'SK6df%KeP((*2&'L*`6ME@8p*@J2M -6)R8M1`-9#qf0jAL!J#@18kF4YYq(e"i0hKBq$59#$eHJQMVP#k"6pe"P)ak&l5( -4CDX@XT[-NI2M1b&m2-'Q$IV8S+TD+DdN19ZP)4XcG#d+VkHUBT)1+`QMe(f4!1B -r`5ZjkMq"@(aPGPRkS@Mj!4D"`XYC'!Z'kS0)(%`pe)8$!1$VrmJYA-6,c`dm$"Y -RR4Hf"0XM4JaTb(T+!-EY(TJq4mCq%L4`UDX!S9P@RAA4Ua!D20)&)5TBB+Vq*B, -2VL+8&XQIk!d@L$BI5BfZ8$h%*Be#bD4UU&iap+emLKk9*3,IdHBJU@FRC%bqCDl -3AFdL6--94DLSVZ5Sf6@'(dIBN!#9YC!!(Ak+KSFcqQ$HNKpp%1S04a5jCIdSei! -Br[862"3@m4Qb[akZFT8Z-K5U[Q5HAA))R4$3jjYG,S`,PEKHBCHE35ANFZ0L3Ia -F#Br4ipMk+#XN-@ka4c5[+G`GfC9f5iL"01XZ"PE@4Dqr6)cC!bBE(*!!4rFTSa' -eHJ!1M+Xqf-AGqDeFfhL+0KF[E#i%(i3V8VI*,KeM&jM@*`Md'b&@JN'MKb#Ljr! -SYK"Q$LLEFfc5SSH!%"iJK(3YQ(,5LBm[#rLJpQdm,F1eEdIT-FAG)&r#9dEfmd& -ZaUZI@r#Di4THBHk2I-T)l&RJ`2ld300ZEX'2KTrX%#Pp!Q80a)X)K+5cMC*B!M( -"!,Ta9a`[Je++V+$%q[Z`a4b"8A'%#Ec9ECiYTZ,Lj)flZBV!-(`13r"lZ8d25!9 -*Mh#eH$H2db3U"UD&C9E6M3fQTF%S$T!!EmZj%Z'6#*k"U%*L8YR0%NraS9qhq&T -GRS@((Q`*(`G$N5Y*$*J8jah#P(LJ*Rb@4#4'YJh'S#*@a,TB)`L&dIH&er"Y`lq -&i2``'G6Sq#-#9)mi0)J#"I%Xf[8Xc"3rII6!,6hG')%#k`JFZ+PlUKheJ3-[k1j -Uamf!lMj3Rc)Iq"i*LfRh#i%$,qe%k1MV+VfmTR9iK1V)5QHL*N"K[bJ8PIhe,*5 -q06)#"6AK3SJKme5JXKX$qRr4J'aT@ma@"e%E`PY2mhc*SC,k1S"L""AS*qSX -VVL0SVBlqd3%FFEePKD9Dc*3DjU4H+'LXkKJ,jb@c$m$"PVK!3`Q"UlSa8B5I1#E -MdL5P,L0ZFU3([%2-NqM+1KBdLH)RiSI,5(1"-Ep#5e5Yr'cN&d"##4GpNiX)k@" -%3LG#[me!&BH*R`qlbqV,VT@)4SB2[2%)3!b8Nj!!SKVp-RESKiV!8$2#aABJY-Y -c4%#J$6N-1"!D9h)$MbHrL5$40i&b"M&L3I@,hB5f,U0#*(CLB8ZK#&'"X%0fJjB -bb%$SF8CT3TT1Qdh)Z1Te&#,3ErB60!EZ3Z,#k1rc6[Y`e"9GANPPQG$J)Z'lDlB -aI+rZUcDJ4%q`S#Ujk`@"BULcfR3APpU$kQUV-%qiGl4ra68rhE(lrJFkd`efR@S -"qabN6pDTrTikHqCFBYqTTNQb5kbVVT+kc5Dp+rjr3&)eFV99UM+c4G1fa4,`m"+ -jX82EYTJ!b*6#&"9iC6mH,Y[2G9-M3ZY8#MpJU[20P%@)Cp9ab2Y+m"DP['9(VpG -KjEMF`&(S9A4,Xb$BUNQiDZfUXHU&X+bXq*QaFS8,rrJ&3C-`C#55`P-dNCc@fTJ -ahT!!Ja,H&*,*TmK*d`M)ZL*-CdQ[m#+9'#l5EH9Z5H58KXm,1)[R"I)*U@%QXpj -2"pGEdPHa)R2@ZZT,HV2,jrh"@p5e"@XD!#9T4jj!")EQT0faHkZ*@!(2RZQb00# -1e1AUB9ENV%%Dp+BNSNQE$#lmVi#`i,09JeUqN!!efheTiZR`0qGP#Ph2qa#iiDD -(G'h0HDfrEmI%qc`GNPNGm)BK3qmM0FkhfU1ql0c@J'PR!mGG$4b2T"e5f)iGU8` -@ZH&JB9j-iE*JACNT3FRjC$Jl+BF'TdP8dV4pN!!)(VUeCGV+cacBRRBlEAK%@Me -f"LN4&V!YY0N2J*N-i4A,GP,PB`TLGCJ8EV0RBHk%9F#j`Uh#BUQT6m)Z6)Gar21 -N90k$IjqNjkqMf)R+GF86XkeVHG@KM#-i@594R8bC#@1D4$("*8,ie4&'Ce[*@4$ -@&DrkmpB(pkl[j5N)LcUF"TbLVqA#ZTc(1J4@B!'je+c`88Lb0q@(HE8jPd5SbaT -I%'Q2*$UI4C'$ZTp#qK%'9'aAHF5ZXYHZmT&GCCeGC8rH2h-,9mlPGr$8cMVHA)) -(FRJcMY2-([%q#$2'@VkPQB*@NqaS48$5@M5ik-%UHQLpqB2ZMIM%F5Gq3@(JKRd -!6rUI+CcNc8PIM#GF96#!fr"4JUS$)DdfEl-*Ra%XMappGZdr(EV0c'fK2M"3B5" -fKhF1GICHG3M,FJ'[&)r$c+!6qZMqCFGj(++N+SA8r&-a"-l8b34G9K$Y`fNN)B! -&6i1a@%#i)`V-err$G!U(TFqpl(9@pj'J)A8Y++SIcrkCjH#ccGm`pG4de[5qrEh -+ccpSlDajLF)qhrLhTdp[kPREZp@m$AAcl,2repa[2QYZlHLjlpPhHKEpmpfr2[$ -YKarihH,&Lrrf0cdl[rbVXadI[YMb,jprepcqG12IQLmm[FIm[DFEcAfhDKCprm2 -22cIr[6P`r,mF2QZHqC[IR$ArlerHZ[CP)`!!2!j"4%05!`"T*""9#fbR!0&FPrq -lchZcE(EL'YFdK$5j,-YfLFPQ#C***@MFa,LZ'C1ZU3hLb0E4A5Y*h#1HR05[aqi -Q8D0BQSUePZ%`iM!d#JP*B#b61XjL-b"L14'XckF1Y5!JSZ)%+kPSp[hmllhl[&% -kc$RIj`FET+FS*i)JH",C*9lHkAEMaIr8,"L!IRNAP+YiD6$'BC)XHl$ICfd#UP5 -D&SL,dEm,ie-9N`$CYNRl*lf8XSLR5Pm4Lm46NV&(0Q3PEC83aY54`HEL&[Imjf- -qkhI6,RcS&`hY!DGSJBJQH6!B8[$MKc$$0ZP0Q-!NFTK,`S!1-d21Nk6mqDVb08d -4dA1`#)VR"GY!b+bTiqTTli"bqY1#B%!NBppcGh-ra#1+H%kFa4A4&)V'CJ&8U%D -ZK[AeIr4+e`-6U,18VBNhV`K%IDH-[TqX#MPYdC!!"YfDa%2FAck,qrIlIDIdp@Z -pPL*pC%D`DJd5"fhS0Q4k+XekP#[(bllA*EDl%)AST"bG423k&TedBAKSq&d$5"T -49CJ`4lJI'aE@h1fHqe5D4MRY*FCqVb69$Y1Uar9VekrPj"+pQa4MA#5MTl5B9f` -2a@Nj''jb(%Qdi%3NG5jjD$33A2$Yk1DUFcTA[a16*!1e`i`QMR"$6Al88T8IYBf -5i)UQ`@R!Qf2YL(MQG4L8mpX3fBdXGFFKDlj'M)-i"S3$YRTMh&@@Vc'10%@)iI, -4GES'(+`4KQJrQSGa*@iG83!UPYp%Th(@DEeZTj*"NlFfM"AlH6ch(m6fedIcGl$ -)!De)Tkdi"-!%Be`8"J8GSQc`(-5dD(T@EaERVdV0c+L,*PZ6h`C%CUm0!`NP'fV -b)C4C2PLD4J0$T#Cd3iX3ZrrIb8*RfKPB5!1er`jL@'NDYQpaB5"NlK8b"#b2c1L -T+M"kMR*qhY[,GDG%TQ"NYL3'L%#26-FQ-XDfhE!B2[)Vajq!8GZ'I`e[i6jS,82 -FCD[lHe[J5"-h'Y!m&DK$-i9QId"%X`20r`LdSMQ!j['!#FdiQQN"Ia2!THl!l%5 -M!FL!Z@-a''8+e68j8eAj*YmTQ12k!1LFiN$j'r[p+GZjMCiC8Q4J-4&NkQmBd)J -[eG%cV+2q*LGBET+l15*#e!#8,"lS004"G803BIh8kS@SSjl%[Z@9[$i36GQ-*Te -PeSZe)@A*5c8c)adPq[lQ15!@2)VA!)pr!'-!c%ffp-,d3L"#VBBa[NAFqUf*l[Q -'V3$PGE`eaJI(Z([UU"Le"&1fYGi$pf+E0-LNkh9jk6Qk`&#r@(GK-MYJFC0YPTS --Y6E8UFQ'3qVEam[ZldRap,43p,Nq0BR%HTCB[e4L24)(@1,!8SN$BTe%*KTZBX3 -5D%R9UHG$cJD2X$NQEHj9cpZ(#&%I-dla*)",0KVe#,T"rNi&+[Yb'dHJ14#))bM -2YRT$FX1SL'0ZGpIp$P+N)*r-hjLHp362SFDe'"r&F8jbE)U5'"KQ1C-a,Tkfl(* -T$ZECmS#!HX*26`J'&XImQiV&k-&LC+pkmA6T,PH2p"QSd(Z'Jk)IfeN5AC8q!a8 -a35b56H3M-0FkiRQ@'H"fklRT%'rRr[3dQ0[rD15Hm`31+60qF!@fm8jkFBK!0!$ -q(d$i,jl++3cE,Zf5SLc"+HEi)Gl'ID%iR`8E#eH9eKASe-2&8!YV["8Dd(GeH53 -"#-YkkSd`0SrUE(i,Nk6'e`(U"K5Q+RT#)PDN9%bm*HlKE3%RLcV%94DT8#4E9+5 -1A$JB1K`!A9%m"3ElMfHmeN&(!46K%!r6mQjhHB,3'fQ4S2De,$+i0@pdA-PDqXS -SVKJ1F4mP,@06HAU[P#3L5E2LkLK%Qkd8`B-X`SJ)46qDQ+8Um48BVU+2d`FBTdU -EpD)M3YUXBCZ*S5SqSr6jh%1m88hL0DM@ih9,(F#VAfh&+eeYJ81'SK*BIK84&p6 -cH*@Uar%bUTB2(J)qG"f[AR8-Vi"k!DrpkLKH0R83QlV9)Ea5UKQ[1V84R898%VQ -2XX-pHV8CaZTCUSYp2Q3GGBdk2M0KVKBqUKa0maqXLD1UPAdd802)q9`f-&V)a4E -U9KZP!FM,$3+T5&P(VGi24YN!BqSSSZVN+"HLUYAH(659EM$I!2QMHmHSHJ"GjIL -0)4FDPrclD@,q%jS9IZjHYQ28RmNkE`Ze-,E(FEh+Af98GPcKIRm92Nri(p,V#HP -rEY5I*E%XC(-`,D#HTb141P1[bjeeb-G#h6fN2L"eTck!ccqT6dRGGFhblhpZ9,d -%3+RaA%9A@CiQ[-+H%4)J#X$9rDU-c!pFi4"a[qZUG+mbee$3,QA**dS!'PTFQNq -3!&AGMepFj,jM8[-J!5A&i$(#emDf*q#8d)$IA6B6#U$SCb1"%1MjlKP`$dQZ!kJ -(-Mk"A9jjL`Gifb`JiaY"lTZNEQX1Z"H4596KlST252JpMj!!G`aP@`a)ZaJ&bPp -4AR3X+ATkLS&Z99a4@@Iq@l6-)[F,F**B&$YeHM%2LkFZEZ(K@(cb+qLL(%ZcjE& -FaG4+GlRY("BhBrX,TMIq$RmKj5C!6&Z(l4#2K1+haVVJ400@c`JQ#N6AL4m0INc -iSH6lM9aCL+#l0H3#k'a&0M930Yh45jm!+TAZ13hF#Z)!iRq)+eHlZK)0A'r!B56 -a8`ma!`261biM%iFrH3L+rqFZ[+cd)hIQ,+(2IdGR-55,!"%`GHU!L$!Em1m`i&' -T!jKIjQ3Tc,(JAHH,2!T#L3#N2X6MUS+A!X#+&rH$l*)X-pHV,AJ0X+cHbV*k#l* -kPRX#)k91!0ikA33(!Fr%d&J0b-ZGUhHA[mM$JD3!1Sh0Z*M,J%'+!B-k4YKQpAV -k[N[lp2AVJP1$aKY)#,2N&%Y'-,L$-PXTAMAU8c[B"E`De!HqIe3YGImDSQaff2V -kVN+)r'eppkP'(*hCrHXTCJVieG+Vp9f*e1K@%JG-@II+e&GX)1p!bUB%`N")J%D -@&e8e%k%*a"6JNB%B5!RN-XF!j)@FI#SQ`D#cUM3Y9%p4BPcXKl&Re43cIDDX@bF -k1JkMidk)JB-haR8DR5CdLUcV3GDpUPI$TJP!VhGF8N@Q-)XlhSkVq!bccc"p'M9 -LImkq$p+a4@U%5iZI+K+M26KmC'UIlDJD$S&8$A@Uf$9,p5%baMl$)!C%hKj-AB4 -`lCeeLDeh68f`T%jNRBa`p%bPH`+5TK8%Ma'4c$(bD!H8f'NJNBc-863cHLVGde+ -MB0ZV0,fYGiQe'ikUR@bD)UECB5[+'MG*ccCKNR6SAKbkR)%V0!1R[FJqV3I*#HX -CpLUKPppQj2jA-@'J2Pi%+bD'"!ALZ)3KJE$NB)b1be3%YM6HD"QhD%"B&-`bBG# -,IS[,!!Kch"8bLddiV[k$Zd62&22"IDPqf`SKNh[U-*f*J4B@e%&m'p*)!FE94ZC -+8f&8p$jU%1#B`E)16$KcM-V0V4MFSN%J'XLiIQ422d`9FbMMVT3bQKrXpa3%+C! -!&V+JIeU6UXq@8!8J#XebaN&Q$FQ1)N#,J+V[k&1VSCJA-P)fNa-2r6-LGl,)#d) -N'caA,cQ'cp9dC"bIhiKAM!8reIi6P'Am4bR,q"qL!-ZILGIArUV@1[p4A1PNA6G -5erkVQ$kB"08lrR&(`KI486!#lk#$d%H*3IEM80I4F4L6,'%1*B,jk0bc9aqPVRR -PahBpQh8Y1VS@ah9p@1jDA+TV%9hR,0@a`MSHBph@1lUY(pGY61kfINRG-L$IE%0 -()8+c@pNaQijR,,XZ'mj+0X"jLKd%9%S%r'%!",pBjlRD98L"1&$qik%1XFkI*36 -#aRVG,HSP"N$)I49%(VK#f84#4301J+jZKT`Ld+'2deiL%J$B,jSjJUj9&%"EMkS -+%-99e`$)'QV4r1*iaSV99Qq+%c%ZDV4hL!'h"MS!&Vq!q59+jTG3r3jF8,XT@0F -!YDEXaGh(&"+@FMG-bU[#YV-XdqcSJfU-jD"FQpfVMQFXf!C(0bMAJAK$'clAPkC -*`EFFC'HjCmJCY0F3d6%@hN%Q#P*eY9%)'#CBm!i'CS@Z%c)JfLjZm9m&`&e%!0a -I&DUA3FI!Gc&XBbX"&$d(3R88"dFZ*KAd)5d[-"Z!S))--Y*4BjQc1)a,S9*K!G8 -S,+!qm(%,U+Af"G45B3(e%J#YCI`#@LcSG6$!BcGMZ+f%B%&Fc9`jb%N*CM*RNpZ -f0e6A%,N@E9#1Cbcm2'89Dh&B8$$&8k6+pYe1LQai(5QbM4#T`l$*281G8291Ib' -fBG!dq13h#D"H!*!!Q3IACD8*b)ar)3cV9bp+BTUEHMd'HjJ0EkmB!H,3M)K#*&p -Rc1(q#ATe@K"(-B2)#Mm6!+`S%1eKj#1'"R3q$B+E'!"@6#IK,DeYAqYX!eLc&8& -ad(HG*#,'iRI3"aP`mE-B%Hq,hH@jr2c1+"Cr(iG8B+8I+%dd"8PYUReF9be#!m, -JfY["V1D'5%05L[MAJN(1RM"kE'T*Nk&kH0mJ[T5d&)VLkbJ@&(3"[`Lr[qY9 -kG2)8XVN2aKNcG8YAjfiCj-MJ6l%-41DD$LJe'q8JR220#)"&00Cp0qeD&"hN(#q -VH0c3,JA)Q0JqC*PpC)K0@FNF0YLHNaC`)62Y1cC'9f!!8d&52MS5-La@P!qf"m* -bCrXD9L"Uc@#lX"@Gd3,P-!lh"ICI3#!I1SZPfR3ALRfRK@)IXj!!mf-A`Y4$0`p -c(%XkI[Va!`)0QF96C%!fVi!4Y"CETm-!fJqcC+[B6`Ne1Hjd**RN*#YMUTNDlR6 -mp$Hd53aZ5,D6bB+4rU)cM2"M#+a26DSM%bFkUf--Gc)RJeI`)BDDm5'+qa$8el+ -YEmTEh`4,4'5P$J#N''8L!1bNP+d)&#jiRd`KP"d&F#5Ci-L8K-%ib8a+2`eeI,p -J%)(2C3i!kbJT2r0GM,$%J)Q5+'V"i[3dAD-DQ6%BH)2CM8`Sb!S1P3(C%i)6YE& -*MeGeNi%kZ2GK'bFc+3XLiK+LZMSB!e)J4Zf')!d2@5K#K5)9'08*(V5$",F`!@E -S8Uja'$$EF,4`+DeYYATA%b)bB)a,b6V,a)&m$1LLLk@*fi1V%c+b4U$P!Rk1imG -S[#TRRf*jB$Id[Y9"0T9Q0K8,#`$l'FJq5LMhkU$a`VK,jY)LBpfib"DpL+h1FG& -4IIhUS1M403+6#DTa6"d86rYHiKU$H[!L-p`e5mh!R$GGA+0YX-*"Q)a4bbj,SA0 -P501X#CNd834rIKEmEG&SV-%"[c9aCY5J#XBSA)hB,`0!Dk31$Ti-1C[4LC-km6Z -#d%fXNj9#*h@#5@X+1ISfZEqEe[PKmQac1lc9iB`18$D&9Bb!Ua-,,VDKq5LL*qM -M8ibhH#Kq,I,elj0'ia#U-55&S`l"T!HN!`%N$R4+lZ[YdC@r6jj&9Y@*4MC+jVB --YNZ*41D#8l"lZU$8-m!ZUIA$G"h'[Lch-)'V#b5N3,544aje*(Q4Y2N#K!D49GU -"1dr#f33,GXhL&$61*h8pbKQ+2&rd-!@pdZf&LQjfHhZ++2$%-#Z1Cca*!HkUQ*8 -3#C!!LdN5$eaSal)RJ$+XFLq5JY),T(kG0mdqH$VR,34-VkEkEkUQ&krfrrPrm55 -5aKbUDcfC!TpMbLS3h5L**G3kr*Mad`Jb(*!!K93DBiZq&98@iZaP-TT`550m-J4 -[3&ELS`3U)JaTTbSNbI68hA"!Rch@6T8-k"!P96YE(165N8SQHhJcZk%BF[9akCT -iGrjG!Ip0Z",1R%cZp`GhAJj4K4$@hCF'%X3m#`$&q53"I-EDMed@$hj`!KQb3cc -iA$UUBjc!P*Veb3qKR#(U"%rb6VhQ`f$Q,DLX(E+J3,P4l4!8q2"IMrp@U16e-)h -kHBH4'K%d&#R#p@Z!-`$)ar*J,ZfiP'CXGKf&3HFSTdBVITcikB#JSa-ZpRrlmFP -SK#%Fik)0!E2[H-CpQa['rZ28cTp*Nk3T)[#TaK4M`J6&GL`C4P8L)0EF4`#(KkH -BD4PH4rC1ee'90SqjV[l[EfUabSGZ4%j9Ze4lCrdJ1I`jBBD,85HiRX+2Mc(l6jI -lY,UJN!-AABLkAH#UMkl5P6X[rba6kdSV"4jDQe1df4B*4A'NVej6CNi'H[9jUTm -CQ[D$F$6@UJNAL(LHm&Uphi34T*AIe&b*%L%CBiD)j9cc9c#!418XEDJb16jqF%a -'NYlR0Jm-p+M#3X)2I-##M@iY8#fGk0KX'de23hDi-(5)hi$+H50eL*p&iJdX[jq -@pUqL6rhENVN)b2XL(-lq1JqLLQ!ZfNmZBT4P"A14Ipi&#Y$#3)%f-SAe"MPP!+6 -&,c"P99hMb'J@U)X(@9E,B9RY%LI6EbQbd(l+3Zq96"l,%!k+MP[1V)f8BD'q(Vb -Um5CJ5Vb"kMLQL`XQp&M6+B[4$ijK)UU!0&-5@',36JLCr(Am(ZLp-#!C1mAqp(h -fl#-C6*!!TIT,+ET6AlpK&MHaj83Sbf1b3F8R0e)34TP+Je$+c#a)p!(00q1cNAf -Q@!$TS`$b0U%E-T8Ej1Z5d5A@2bB4Cdi`aE@@Lkp&GrKTC1EDJb%bCAG3YS#3!%l -CmEE"CqQ6-ND-8e@-JQ$94K*6N5Uhj)ib%,eIZ8#'Qp4cjf43eN'JM!QY+5!MPdT -fh+U*d&GG&@jcFfQD"1aPK'pB4[KJ9S+B'D*l`akJmZrD%DEjj`@%U@Nl3b4b!&b -Yq1Rp*MN#A%"hb+M@V2RR+9!"HPR0KJ(NLL&8%Q*P`SEVZSK9a8B*XG)@6eSI-fN -S%$k`B-)l-8NdTEQPN39-C!L0q!M9H5hXcdri%kckbPFYh2UTk0mFP-3jR`9[F9N -%e8AA$5IlIamhb)(L-!*&!cUZKp#TjBHVVR"EFB"%p&apf"%![Nr6Z0@1+S)NeRm -IL5q$131Kq)GJp$pb9@q1TU,Lf,%l44&9V9BpAaBZC#,h[AU0PaKp44aVUY*+[+" -A@G+J1(Eece@k56kK`L)#c98p23U#&!kBC6U*5U$mQ**4P1P244SmNMX("CZhfX9 -N$S5"YR-Krm0&BK,$9fF%-lH,56,"GX$K)f",Y3PAb2dMP"6%mH1["%4XEE0h6Z! -l*!I2Ya!mmkNf*962&+aK%%YRlQqBdmG,GU1p$QS`[mB#BiS"4V++$i[f4k%)fdd -Y,3fe$4,5XJL"D-YNJ#Td-Sr!*-ca84c#4+fP4(QT0hqibUM"j5L*1U(+E@C9-k% -J,hNlM-j3)801,I*qAb*[-NHB5R6)J,NZ358Rjc50'3[mD[d[lk*J(BHqjT&#FVF -N*qHEk['-4pm"m5&BTq5XCLLdH`#NZq(qNE&pErK!Z,!d$F(#)+(1Z,aH-0b-r'J -L('U0,H0G(CS4)0!@Cp!!"e5J4K2&q#2N2,43M$p*M@&b*!*L0!bRScjXf)3!5&* -6)%jTKf+kr8`,CCfN,4*3E&%!mQ+aPY36USV`PlNTDfND43M($J*q965a$DM!m*F -e-GTJdYT`%efeS[Z5KPT8Di"6a)2Gj#i0%TM'+PM1Cp9G&A*jN3HbMMPHNq[kGZN -LR#!qK-+h'D"Q-aac-#bqD!41,1i%R*e'[fpaElK*UZ4FZ31UJM#2QDdf!%L*j#M -b)9M1K0C(EUSMM0R(kZ"31PIXeKK'1BbR!e)'4e8@()CPYk@A0M9''FMFKSAR-K! -h&j1%!`LBPMR#IDG32A%Hkfc)0K$`'@$b*b"l*LLUSXd#3f[1VLPQjhcZa8r3dTI -6#k5IZTBh&J5c*Z+i5`epX6L*!VC0T3-A$rM5@GBD&8q&E5)C0`FC%#E9S48L8#) -4Rq25$De,5E&E[J66#&6B1"N9YaA6SH%$!IUf%EL8C2beSUZbSR)b5"E')meK6S6 -+JZKXC#*8#Gc1UCSY%2aX'RC@a`KRi)Vl,a1*EYd%F$SJ%qN08NmeQY-)@Q3b6HT -rj#dL0G,B1Cj3+CSfX8Y"3fmUcKb!28m@eR&'SZIF@f!Nb!ie-qFQ(#bU+%,Yh$S -A9l1*3)N-$Eh%K+eRPd#@D`bp)P1f`UHQQ*Y`@$5"BcRdUZB(Jh3!G@T"-*1Kp!a -TmJC5,!"5f5FCdQdNq,IX%T@HN`FKpRHe(1bep,&$l,164pB,FJC!"PQhT!aJJ`" -6cL$V2LF"*NASE+KVaG41rc`dCL#eLb&`EC8K-b0pdc8#6c"i2)M+AC4Y!Udi$$G -Mfh4hm*-VEDK#"GI*eF3X'#U+!KhM,pT'f8A1Lid@aY*qPZhQ%[-DDR@bh@BbRl" -XYdRU"0QZ[+ip"(&-S*X4KE"``V(`@ELrcQ-NF31A5ijRV,eG)JNSda**fXMX68k -B)-S,M*!!Nib3!(YB99Dk'U2MTi0F1hAFC4-l3"ZCLShq%5*mCKKHqcNa@5,ZYEP -fiPll0K(hYMT$9"HpJ1XJFqbjb4%Jce,IPS2N$TUfkpH%,2aecK!clN(J(%@52h9 -8I4[N"*'0#FBqRV1I*I#0L+bM#h`,G34PX`AZ-m(RV1VEdR%1Y8YGF1p0pBS+Gaa -bVmP0N4%M+eA(MFB6JMR&B4,bM%GF0MB153DKEN*jX1%SkkC3'Q,!3"GJK-Q"SHK -a'$,-bif5L"4S2&6Ml'PGPFYI@"fdp3D8'E0JpR`C64&,AC+(d`28qT)Y!T5iQ8e -P,V*Z23+mT)L&*Vd*Y2PYBTp*arQ[FdKbLp*9A$&F&lVYE8MQ[Xi302Q6%'Jb'0J -9@+LMKAEePG#)&SF#HcVYiJQ!KD#J*!feJm9(+)Zbbk1Kf2-Y-DZpd)@2ZG3rkA9 --d`Nb3(!qm``&&rHAdl%`31e3VZ`ZMHlC!P(S6Z[@GjU@CkPTN8&l%USL22[*8Hj -bc`+i,+mjbR[G`d"-CZZIRQ,8RRBcQlCFU)$@0$$T$R,f*&-Zd"&(BN20K1UC,c, -bGL*"1X"*(A68-#M-,*0-"A"89@L+4TVSVl3(T61Jj"6MY3Ja`D6PeXR-P%3)Dfb -Mb(!N,Za1e3br%kXCRR,)-[c1)3L4KUG)b!l!53C[Y)eH![%FkN0Llr!8&&050Ic -1m3a0UGi2a6q*K%SN&*!!qiG$2,'B1T!!0aUNLKZN2+bF$$4N)GaE5D!hhp&923% -IqX'@*QbCLkSJ!)a8Z30CS)-08V3"-'!B9F22$Xr!DpC`aL&d0[`XASZ(CqRYcT! -!9*'241VpkEZFcVpkGlm6),kCA,8,JNb-S15rZh1aAShGE6IH%P2X3ejf'1S*@+6 -C+0B-2jYr"UpCqE1iC-j'`V+cc($,f+-KBh#(`h#lNA9'L#39dd$+c3!cS+T5P,p -HEVb2aNET`d0QZid8k-!P$G@PpC%TjQY`UT-lSBUJSRd"fAA3+5II*1Gk54PL%CA -b!J'G"3k2S&,[15b#VPU-,4UUa[f9J3[)$aNC*K,kd`I#BSkMF+,8l&bR-iLB*RS -T6GH9NCcX3"Ul586$b@%0UL+F!e44IEk6P)63FC(!ZSeYD'@Z%fL)YLj[f%S!AVS -ia@`GLF)eYX4+4RB3S`B1LNN#kpmrNV)5m$Yd+KrA*VAV1Qf5Bb)j+F*PYK9Ej`N -*%#+f`X"*Kb3PQ5k4dfkVpM%$$*qJ*Af&e%4J-(#mc&dL@Ykk%MVh*LcMe,cR&br -ZJPU!jZ5-lGQS"S'QTM'RL6Xa+)eGYC5)QP9)FJb2ZEYh8P5$"JZP'qK`[+9Taj* -X1k+3!,dG&paH3X1)B+%`Q-E!&2fe9%jXaH2l*JDT)XGM2`AU!FFD-HF[2C*""f! -S6caJf@1)@RV$15YkH,-%2('BSi'c0rN)2l$)lIAP3,'0TNLaE4aU)DFf(&,Md1Z -AQjqFQ4GNdDrpS6#B)%-0UL`d0MFA"e0jTDpBcTAfkUQS&-h1k@5i&A0JF#'P[fX -%3%Jf+HP@S28+JB9SU8NR4YE!A!,"q$A4%Y230"c$'mSddFI9)8+9M8Rf-8)Ib#" -9`p-SBf8[T!QFaJ3)f8YC(*2ibM'*Vh3QmCA@*,kL5F6b5[Fj*P%[6m)L6m*%k%" -k'ZXiNZ,L9kDiP!R3KI+0B(-TUM"m04EIA'L2MUP)H%T+F)eD4k@NE`5Yek9)Hj% -AL(`!5hHcTD-lAp9eTQqS*BG8)$UQUpa`d3FMl)Vb@'Q-(e%Y,ZX%qfH1eZGjVFp -5VFrV@TqAY$l2kRbQAc5SmJ&SUSTGAfYi5J!Pj5#pZ##F-+p-[B4#VPk#![X550r -6(I6Z$AXQR-`,iPJhhpkM*0BHI@ENdB6B0[,DPYaBfchl#S2Vi$L%M5I$d3P&f%J -([rMfA"j9%PZqq-Rjl3P4ZHTm1$HXA$E4JF8ZEKd@6EK3"#HDBRBKl[i3&q*+`LI -Url)Y)8DZ,&ZF@afj[2,*bRh"lIY%"GZ,XAd[ffjb$f1l58PmqYph,&UG%$dhNaY -ckcbA@jmXfahF"N&dGc"XmLE#%IQ#aYf&#aSPmEXVbljFPa#M6DmpRTZ+h[2+hZ$ -UNeT62-'GlZhBl&35"rDmAlIe8p&df,NSefc#d,pm1IKSNGM'*YSQ6l6C[3AEQj9 -%VU&l"C[S-ME4PI*%[h"-G!qld1(q("FkP-6blKqUE+**0Y&@RBRZF8a8G(ZaA93 -5I`T1ANF6C5ch-*E[*CDcD8EPl6lhHQch+BPAHZrrNJk)-Ee0BMSFXZCZT8T$32h -CK0'3!*NIFkr$aCL5F,XIb'G6AXDQ[**0Q5ke-IDh6F!(Ze,YhS3Ve8TLek@edfM -Dl!!8q3$fd!(!*$8A"b"0fq!Za`@$NRLSCf9iL3H`ah%!4pc6XIN)@$6jrlaaQca -N0K8d(*-T3GAj%P)VZP%K#3H#TR`N3qk*k'")56clXlkA'4Z@-6B)4l))&h%SCXk -1"Gf`Df2Z0EJfTL41IajrD`N(B`)$&'NlUPiY9K*c1Tql`BlNG6U5Hk8M8GMK&E0 -0@j5%Gr5cdG[NJ9lp"TY#bH@RD5$La3h$-P((kIK`BC155*fprLef!!2X!1VC!45 -bJij2#)TYhZ*J!UDMc8V`[KPIc0SH"100M2&1QI&aaXSiX4*GEPF5UaXdrmBBrMS -ar&k*i4)*HqK`X'fGN[$h1JpZq&5-Xd('T5'#bI2A8[%F%8E!3-(NEYFSLAA22jj -JV"eJV+fATl5)"(AXk1GM%%9XHjH5H1bf*bBbPTSB5jf-TB@%e-N68qJ+QpTk*IM -@(hj"LSdfBq1-C1-bDbFULCrr9p[Ufq6#3f6@cTF'cS#,$VM!K@%P-IH2Ilq(TXK -B'jGCZdr+3MUXp5V"FpHG#jE!@T1F-58Q6&F5-aqj,r+IX2C$*6(rRVmYS50PJc3 -j$[rR-PZ&SrTF5B51qEF58km-J%h%9)P0(JH6LYJ3bjAJ6q[kGfm,LT%4%eK%$(e -"!JIrMDhj#HRJhI0qi'+!XB-!ihdra55+aFKI"F-+fq*9%R[qcj`%1r3Gl0"VCHE -pNfMkF6!FCGY!NPArimpKbZ!8i*N9k`(A!FDiYV$TXf!i`VEK1*Br1@4Lc(LDQ(( -j'dqq#(EX%6hr![Db6FJ`cdcEf%YN-0*"`lj2$M4q%JbhX5dJP&12rXqCM&Nl',0 -U(4NPMS&lf$B`DXk26aQ*865NkMCVYkZE-8S*acm6"Jk5R[B[dr@-!8qcJ1%E3X$ -JB"+1-2E2KppR`qkJBGmR!k-I#dcDV#3f2[rYHBaXGM#bU4@#J*m)N`GTVER(F&* -J89LaAR4GC-2q3ScrLc"XJ)*SiIFM,"-mc6,"0q6MPBBYX@#pNYLkTZX($+J3Ncc -hl4YhX19+i['rr1T*P[9fX+aAD`p1(BH,$0Sqj8S*$C`G@hcFX8P-!R%1[h"q*`2 -H6c05riDGe)-Rj8'"#A0I#[Fb0V83QaBi#$eB*$-"Kp*AjriP1lT@GR4*'B!XA%[ -9A8(U364NCS"FATcpjUrC*&Db55acJ)q&%VRR8CAGKCp4PGhY5R$q'j0q314qTCD -aESF$I#a%ah[YV0Rj`&-rCmaV)HBYF!#1B,(-'"c@EdcVcpa'Jk)#R&SCf&JS$9F -!'f%6PSqbaGG"A(,2h2qr`3X#@-N)B*NGE!6hf%RlC2'rE@#-V'@-h,%%4L,$(FX -pR2BG'BQ$bkjqI20i4JVJJM('`iDf43RqVGVRI"5!kmT+"Lk@fF'&JbNJmH2aPFq -c6&I,3-81'96SXJ8Clrk$Kr0BCQQKc,*!!KB+'li$%2chVBS2L+5D@M(m1)Ef)TY -!9'F#)+QkYEIrQ&M"'+E)$#YL*,"(*J#3!2QpHfrl,E'#(@P82Y)pIrRYAmrNdGr -2j2'e-lQTrrHD%PfeL)N(ZAiC'HUh*#B%$4j,(e4PleZ*+0HdA&hQ6E`92-)PXkb --iYiq`QqLRSfNG!QZVdc9@(BQq-LZ*hHG@c#FrFG2M8NamQ3Kqr#++cB9APef*'U -GN!$bTqGGcaY1d#)q3c9rFRGad*H(!G6HAM3K@+f'$4emdbkIje,HF&$HN!$i`qk -6Cm+HmaLH@Gj`1EQQb,l"kR+jD%XkYX3Z#PeBG,V30rpKeXPApGHZ,V[m0+iQ`L[ -Zfj9AAXdR"(f*UmYmRK`-+@`0Ijh*KB3rl#SkJqheE$Y+`485#""4NXp$d`Kr[Gk -4K%9Q&Th*13N&VpHKN!"TURMf1Ke9MKPJ**@@YdM''&@463[ii)@kVP1b%[qDV#U -K#T8BY%H`5P3ppJK8Sp,j6%bfIlbRLb[PLchMKb#ZY#YJ'UqidUkLdDHJb1(M0A[ -dHlSJ,kN*fJdHl4T5i[T!0+N9Kp@`jh,lTTN6pTJpMrcQj83-&AYZUZ%SSNl@44r -jkHl%&5j'YK3L!hC3"K4Ibbr@Ar-@Aea`eq'8`F6eem,4cEXQ"#mZH2I`h[)1(Sk -k,PS[8X3AFX6PCR5'L(pL%E&)q,A2LUQ$pBM3l@$9Z!iQbK(5pIHPkfhQ5&hd*bF -Yh3E&I[KZSaKjZ$!FZGa1)#Ie+48!%fjM(`Q)Yqf1MDD'@NPm2Tc0R&5#iURmpIZ -9e0DIV0mj,h@hMKRYBlD'rk+pe6dL&0()UQKQZ8GJ42(@A&(I2"GbPp4FfIAL,qj -KaN&'H%p81)&1`lRmHec&Dalhir8%pq!e(a@1XYc,H35[E+lJjHCY6H5FRM5DBkM -FEi4c$+V5r5Lr`r@k$U#)CdC4lAq6C14EVM6"+'"E%EJ$6TqVj1&!B+06V#1-EKS -#4mb`b!a-*ZE8#`02a6j@,EBqP'bRiUK[353f'qD&J45()d1FLJf!SmeK1)2i*C+ -#!(LH2!`c4&QS`%`*+NGaK2)Q0lPUmJpiS'0S1[GM1Eqme'@f"%ba@-3!Sqpm@dh -CUP!V&8V,0GK)cVIc$@14CE013$KYGL`8$aJJbT`IDQ(&ei+a*#KeKH!)AM[V6LD --+VI9I"Q!beRZ3633-8RRqZZ"4REG*ea['02rqFil5B5%,JDS#dUB@B@,*ea5"dD -G$TT#'Th2ma"*CGLR$@2@#hVqI$KP*5GjFT0U'-Xj9jU$U96-A#l#JF4GJ8e"`B% -UeDjGVB!0,9eb(dDK,b98Y+cf3!ep%(LY%)CU6lacCqC1FY,$8R2'683M(ZaEm'A -!`LSV[0lhCB!FJb(JfDdcNICM0pRL0JamNID5k()4ZR61ZT1FSNf90&$hSXcQMf& -r)a(8c)R'1J!kX)pelplIDX'(&(84JePC#C+(i9VD6%X(1R51I4icpPC01cVcTq` -9FePF16*"4Pd0r"D)Q3b1Pf'`2TmpK`43fI0c,j-40IG1L"Cj+aD#J`k*a$f#@AK -rf))SjS,2%56bPG2jhh%jJMB@"'mm5ZbKEL3hPf`-*(Z1I5#jcp1V!B-'EFdde%c -,Y(TcJYG3U-5d,,LfSCRl"SE1FiZTH&FdpX&GC(4$&6D1`$AN"ZYN#MlHbS@J%81 -qNa9pHaP&,%"mcC`e&ZGH4Y9p(lN*X+"+4p3fma8L4jC*,T!!)&U0Np$6lCjjaAF -hK$eh8P(0!J1&E%141+CjC2V'%G@c)aTMepZdVcXZPmLLdi8cIbT&iS",'QUQ@9R -NbfMf8b@$QEq9UXX,EVJkRrl!0MC-!b14H3j#'Z&ZZ4)p#3qfB%!VD%"-(&[T[YH -S)G*J35&9lq0`J8c1,+)LZQHfXf+Ylp4GK-44JZ%kHkiJ"QUY+EY,)JE8MDJU4h' -2QKKcaE*A!mN$Z*P+LEDBqNE)K3hIP3ApJp)9&(lF4%e8qaVT@j3p&dEpV1bj&'8 -pSFk'UqjZkI$dDMU",JXPfEX*G-"Tb!4R8K5!M#`H[*3QEiHieTpLMMNif)"'Y-( -&L3Y60AC$G$EE1[+dKJL(#V+dNBM-#9I(+**HYRHL2La%SM-0%E)NP("cUY,2VTF -p'"D'+hAh[E2-f6)P68ZG68[$UGU-V")IYr8)#L'c6l@B"'U"LHq0-CZZ-MG-$8@ -Y4'C9haLK3QVU'$08L4Q)D(%`[eQ(q5D"U8BUfImpXj5[HDmXRIr1al'8praR,,@ -6%KAhY'Qa0'Nq)M'PJG`1T1T!9+K3aT29,!KY$A@bcV!CP4*Rka8m*%#A04V(Y&6 -GD@Qd#RE4+5"&e#iJ"3@mY+$3#[06NK[hJ0%RLr!JNUQB$0*d#K(AX"A$QNaSK,h -3h-kKX6(60N1h'(qq%iA5G*!!L,TK,2h1RCG*E$Yc8USpeBp-e1G,Ee)2-N5V#Uc -5,b-a*cRMNL[APU!aUQNjl5A69`ZU4NV1[A#8mShI8JHeahYb-QmG&VE"M6mLZrN -ZqlJ,kh3[a$@4ZcP&5F2*j1l,KrVc'm9qN!$d48aKN!#DrM`dEhedKGIQAcK%KF5 -lmdGC`KNNp&,6FaZD9QT'R'MfBr2IjkI6jPTh[S8Pq*!!F*kDbNidVe1cl9Ndcf* -cIIi0fVc#REqI*Fa!`JPUaZp(-j1Db5%dp@`3Pq9"0,%%+a*Z8V0f&jU(U@PDK@B -HflaAhP`i[Y#L'&0KSY1Y9C9h`-f[TR`,41KkJ0Kh*AF29e9"Xp(LUbVIBLXqCNY -&#D9`bbL&fhh)9K!le&G3M@e(2UV+heFJZXS+U0L8Q[+*eUS#%Z"p5"d4D8F8fbL -Fdj8rrRab8GD-Dc8&c9LiJL*$9*!!d$kY)SGNj*L+VN2"*k4-1%@AU!NlBCjCQCp -)*DJ`mh!eKb%L$&&-IZ,E&b(f@qPEm3p"(p5,r,``9'8iIHD&NJr[jRP%#8Er`lY -465@UKB6,eBeN4FkmP'Kb3&+1Pbb1*"Df0C[P)[CZmXXmG5$R&I'!+cHUi!I9N!$ -$Tm)*8E8%hk3L8Y3FDX4&p6`e6+*D5Jf0U&kRKP08,e'M@85KZfKd`&eI6%qB%J4 -bUMkNcUTA!K!F+H9GHpF%rAQ%H)3rUqEIhP[0,5Fc))5QLJqPZbc#T5la!&8YlIp -pmfElJ*I4B*P`$32Aq+UMrPKe9)%MGD(4E-Q6ZUf$XVhZT,qB2US0rIbYNrM"-UL -mZ*F+SLA&r,2A8!&b$eam9lhNL[TIkSdU-%JX&"B#'H3*i)#"j"2m1RZ%a9QiL#+ -4I9KXe%c5KN-RZ,%JMjMF8)1V'Ab-`$hF$pc'kTUUJMak%!F5BfSpE8H$($dQ(aS -Yb%ZRSLlFe#4$Yk0J(Jmp&-8)4H"q,p$eRDMqk!B`ISH@RjBH8QD89Fl*K--aG8I -&l6$"2DXmZ,UXFTkmM3Uk!2$j,6kB-j+(N8T014j4mZi&jM+QB82XYRFNZ)&386l -BGU+V+$f09IPEM'U*8VHYV,JI#FM6TPjD)$h0rU!#ZpY*%abJe21k8kCLL)"d`3A -9h5+a#-9rl,FAAa36#M!5U4!NlDZXB*mTUdGCF*eK+QD9-+N$(jcR"bNi(18"[k9 -[kDX!q,YeXkI%8U$E+186KaA'BcI)26C1$iLJ3Xi+pY$Vbjfd4D[#hiMDMf#`PcR -E+dcT8jM5Pd+%8eCb@UKB+YP3BUB(FNKS2!,[qRmS8A&i2JX#YqRD4Ah*MkdS+bM -FQF+3!'+fQ[,+N!"'LVjDdj8!J43D69,%T5"p#SrcD2$!M@RX#A,Gf#+jqH8D@pX -$[@""-4i4FP0-KqM,$dAl"&HJ-*VC3cDbT5+d-MZT%RSMZ54+%I9`aeEF@fT`fEf -a58A!3fJh31U$VjDQf3qB-C!!51FmR(6L,$2d%d*K)-9!FTp#88EdD6aL)-+2@kZ -q$)#-+UJa$Qe()-p28L![-CfZbBMV1X(CJ+SmTb5Aq`&@8E"P+C*YPCbdMCfX5Q6 -c8KYDT!d-ZB&bqH"q9dh"bb#TXSSCK2UJQ&88*d*9[`PKb9i(8$N%8J@3!-B2)Bf -PK-j',K%4hVqAULb'dUNS,Pe#X`A6di6#'&iI,AKC318#lkecDZEKK`9HJAkU6SX -X#a@C+V-eM0fiq6-4b4T$1bY8mbB,H0j6ep&R'G2`U#YXJ1ZYGB43aC)H@JJ)E+H -`&*c0r$MZ&#iQj@@F1@QX5QEQ4k19k`mGpHm[b-A,@2"-3p)9BNN2AH050AZTi5Q -5'bIPK%`dlU*+d`e`LfM`8+ASD+GqP++3!*%l3mUKSjl$"Fm35F'"YKEU&$+!kGP -,DB`0*PC9%81UZ!0'MTV+,UT)icmK&&%6DQ3AUq%'[M44JCN9Hc'CSp39(0S8LF! -D)M4j+R,[`5Z-@&#TPR@$!NFP"V'PPm5@U-5@qGN5@p6V%PY8#l&&28jX)A*ML8p -*$&!IN!!CNLFhLZ@%khM%&J0lb#crC@H1aimU),V-Z9R`$!e9Tr*Z8MK!Z$jUXDe -@$c3jSR1d5f5IH[lrKRf-EF3JlZpRB+"&(RTCa6Z%3K1$RX$$LU$1D5KlhAp#!S@ -58bJ+JhN@"3[-3K@2BA+Q&0`S@C%+CLJSX`PT%!SSm814GNqhe46m&*-jJXC[3QB -iHpDa5KV63Q&E6H8I3q'i'Ie2$lAiXl,G%)KNj@q'+)CHdib+&'PRAZJ)-QdMIXb -BL*PPr$#D4f+N[Rq)Rmma(400jm%BZ8BrH)Y9IBU%1Z9L[9VC8#r)3md4KPTc9'e -eEmHVaEfCPU[Qhk@J`6-GKEc4Jl43V-C9U!EXJ9Vi#1"MFhSDX8&`h'3,$++3!01 -DbM@K1TTd`2G*ErEQQVlXKj'e(fG!Da+3!)Xcq%3R!e-Sq$E@1pJr5kV1%@T&9fd -SA+"H)'"Fa11`j#)(EX+!e51lJ[F3J++L4(TbiD6-*F4JeAN*-3LN`qc8``aHYh" -N&jM**SD&RN%P4c-9ZXfUkTpbhk)21!eCQF0jMe#G(j-VaH4LqYJ8)p[q*L[5E4! -UCXd[IK5Uab#Jf$eS`8mK1A5[-fJMpKdLLJ6Z!2!2dm-q'"%Y$-8r3P(BPHr$b&9 -9q6j3pKjA6H8MHT-A$ZBS$&,D#%83@GVedERm&RX8+VQF3l4"8Th90dKTXY+$@5* -@Ve!i&iiXMSB&D0EE#0C%)!LS9!q&#aA5@kR+VX-Bd1jK'q*535!S%*%91'*0[aE -"!H8+!3pBF3DXG"VlPqk10VA(B&BiSIl`hpFGbl*a@bp6bBp+DLiMlXL0@ilU[&B -8DfP#bGEi!FXk#hU3!2RAdi1P!'b@!Gh8r,DX)"F"FkFBTkDa9GjQMb+&TJ8SNe! -4I"Xj8ir*4I2L@1SKU+1RIV6rBa41V1fXBN'55*3e)pG3*-1b9aNT$F!%r#TF&,G -CAV&[Jh%HKPT%E#1NJ"N(YSed6KjPSMXiPlSh&b!`24Ep2Kkp`T)hJjJf`b4TjLV --P(+N*8M4'mM&p*68#3V8NShqRXIBil1U+AU$Q6fB6aLBR`dXLFH-k*P4F6-053p -JB(HFAZi5"*+B0#NDpH-$qp3S+L-"K5#h9jKl-JA$#YKLjZhCQ96X*+T6S#N&,K% -E-QiQ)4i8c-X!QU[EBJ!G"$L@f`3JZ(ba,J"F2PFAM!,YL"2i@ciRi(M8e[*l#63 -'8(eRqEhM0TYNa"Tj31I#4Mak5`CMbfF,Lp(`'YU)3GN$c%#6$#8PN!!2"1*P!"1 -PSBdfJ@&k6+&eX2dLTShU2-rL36Qc82#H&N#RB1"hkjLkc+2T&c'TmF$GKZ''&$C -dK9@5R)DSM5%R0XpH#V`Hd(&`Tki25eeljMJ+8JQk+V1PLKGCf5H@"0MqkE!-f(* -Xf"SkMJX$Rh4RYa*JbqBbB'X8FCd!Qc5jl!'+U%R2&JQiCCq3!)"EYUrQ3,B"@lJ -%h($P6ASJfp`YmV#-))ar(N)32elj5A'QA2b'5))UC(X'M5C"`F0R6%ZjHeaAZ9[ -q-FVGFSGbCrB`9fSff4rIS+N5UqEQ5)2bVaq(%#FPjHh(K8Y3m*`05EYkpq1!T0k -09kT5R"(EL0EQ@p3CKZX#%M+UMBMDHJPmX@*&4kN`2l[+CaC82[2"AT!!ef@T5'8 -'5L#bF1Y"HP5%5ZCZC$I+FK3N``aDBGSM&m+cM`Vl"3#)#)Jh'FSGT!Q#G3prFJ@ -J6iXm(l`PX8BY)-)e3`dL-N0ampYVXTEET'!m*3IM-ac"H1d,pQ#mGT)8M#q4[%% -#)B9RS@L,k4p2f%YR!PdbVjJX$a'&e3!Ck&lq6-f"jFm5D5,M2S1#DNHRQ+Pk#"K -1+1),3*R,#Xk%cK+5J!Gf2Ml%8@acP,QL$pf+IZZF`a%JIU`q[Bq#2VQUH)@pUQ* -Q28"ce*iNGaD$1H3-N689h&8`0G5+i4c(F0+aB5S'F"bE"U"Ui'&C@LD*6)PXaCV -+H5K8,j119MT5Q0*Id$eXN!!A+LrjXl32r9qcG3ipaY"02RqlEL%mXR)APdeJXS# -@N!$0GP51&d4J+0UBLXXHmfaKMl2X6cY`$4rdL0A3%4,b8!C#&LkVZ1Qc-Q&2cE4 -H5BK$)KBB&+4,(VTb+5f`AUIBRK+U$!jbRi5Ib8",lS!3DZHKU[)ejF2Xj8A3'Xr -IKq$d(6*%ZUV+YQ2EH9GCf9aA@@@@EX!F'[K@m!%Ud[$iGqPe(LMdK"43!*e!2JT -3Yqf+@ZF4)mphSJT&R!TPIrJNURVc(j9NENa9PAI9MG((&6,Flij&-SU1q@-HQ%D -l'k,#`9"eLkMPh),+l[6GkE[CSdNclMPX'%$&ccRA8%9kSFJ)lmE8BKZ3!!#'CMm -5kY$$I4+94@S+HUcHVQ+MAi`fX%,LYXa16b0$+BN%'k3L8$,4SCNC6c-L3i3#f)V -S5&$X$CMcc8pleG1ISJ"$2*J&9G)J!iHiPB65mmJ`qk15UVJd"D1rcL0e%Te,%kL -10%3F8kJTli+Up2,8Np)P@U3U(T-[dS6cAjC-`QAVc9'GUGH8VkI(ddiY4S&4qf` -RkH)acLF+c'"-Q(HYT[)mTY!LC6mqLl("apM3#6DFG,!"KC'*#JYJ-*c(pZN`3T% -LScGXaF6JBr[2,5KEVlY%'B$*SJrC%YCa#fLcZBdYJ'%r9Nd,j,r-&QL6)U0qbK6 --(B&R6j!!f19jAjUqCaUTr[`CC&'!KrZlU2)ZRiU-2%NR+#"c6GAhH[!cJTmJIJU -2Pmf,$lEMfL6QMM%HN!#IT5jXI9#FV#$H1lT(S3,IiA#d#!Ddc'G-k**FJR+jefl -Z`H0"bdTb2d,@UHc5U9krN!"8!%,!!("bXjMa%i8G!Z92a89NLUj#@K"%,hd@8D( -N&!%J@Z+V4,%LPI5)34DFCBNedp+K-*CNlUqTQTEZRUpY0*8Ud&,aCD%@4p@rVDK -@K#"p3D[H6DSXIhLF'ICf-Y8#T*9X1%0Zhl63-B9eAk,9I3P90UTB-b3%VA(D6J% -U$C)qk('20+fkFG1LiT!!TTid4URa5l#!R*mfr"a'Edfi%%9QA5#AJ+aQ4bA+V5M -m#FD$a3%B*Yc'4NC5*PET(KPk8`@1d%2LkD@$C9,R*G3hkRJ-,#B`R,qJh)Y+aPA -PAT!!fKSdKS%B(Q8SP)NCrXJ!2'`T+aqQJXVXMqq3!!VAecAAc@!(5*-`AR,4kr` -5Mb%T-BS+0j+,TCUlT1(Hlk9V3lJQ)e&0+)jj2KiA0Gq12%e,chUEC5FRXP04)#T -kM(%j5a@PZ1Y&E[S[e04%-6M9H"bfq1dqlJ-)mXXG4(q*&`SPfXjB0RI*,%[AUKU -(JM)b0PjJiLH(L&&(!"@&@e,i%0K5'F$,9(N8!F"9"!ZDbV-%f,"%q5$-L84`'jr -0d6'b5YAAl'"$,PJI$ihBH"L2MEjEYfSH&G(e(BI3Q,+P[j,qLQ%&G69Bac8SC!F -2m%EYE*%p"!(&k["UpJJ%UM+-3FP$JJ&3YbSH4-R0J4C'B%l'j(TC!)9LKKlH$9C -4&bdXi"f3!*L6SLTZT"5TG"A#eRhf+pN6+-KXBZT'3ar[P0dp"SLB`1JQ+2#Q$3! -iHNeA@F(Ep1"9f8b1#L-lklicN!#DqEm1h9h`0J+SCdV6fUZqh)QLUkMcZ!4FQNQ -jSdI@-P!a1)!L"d[)3Fde@mV3"ER(VN*XNqXZ-4i9#2ED!#29@KPFa+rem5%!JeN -b`5jF-X&+K)VY9paEFH%Q%I#4A$ik##)@`!LTh'Zp'fBl8(XCC&A"8HDD4bJFBdQ -!4!F%$-!S8%pJB)[a@Lqr"F"9,fdVb0d`'e&$XS-E3iNi"c(@9jB5HP*j#4r*bLB -FaSf,#!S*44B1I1PY(`'9ARUM[6)ZNHQN0h801H4)"k'*3Z*)U+%['ee!`j+5HeH -G*qET[c*+KCPdLcCpGpI*56kTQMeB6++G9RehIa48DYNJ9550klY*bGF&@+5F-E' -q[A#[EJ%N0AL!8Xp&i'$LQbCpLm#T[iJH(bekj++6&9j%*95XaH$S`8G5pZ-kI`! -!-BP"4%05!`"B)Jp9$@C'%4!KiqjKrffrPUVdjZqk[VQHj['jVUYkUVCk3I0%GP) -h"Zc+!VeZ*V1cb*r(e[+3!)lVQlQ&%-)9lHHA(A$+M)K1McJA$K0VN[%mkf3HYa" -Hcm*kK("k!b1%j9Q(dB#"*YfNQhdc(Z[[hprrph8G),ql*1mP,cm!&AGH*2-J-L) -5)I%!%5)'AfQ8b9J-2l+[@3!T*JH`53LLfHa"i#5ck(`cjm!X45b9i([crVa[`JM -q[V-JiceF[Df@)BpSp%MVd%H'hQjSN41h`i@+@1ah[f$&Jf#ZABdf2fF%qp[p&Yr -ALk3442JD9JbN6MH3!%9K)&iB51%-!ZN#AhU#5C`[TlBL)#cYEj'P1#)j*JkANAH -XccRHk"r`$`"XIpJIampPG@Yc(-UL-KU8&YmB6,5bq+m"RiAj3#`C!5Zi(#CF1TQ -%#CX`hId`'d69H*NhHiVrfKEKBKPDTG5!$%j2(2945hb-LiqS4[c4Mm`iN!"'Lkr -eU%YCp%[*V3#)km6P%)M+Le)eMG$[1h2+mH8@4hH+BFrJl%9eeaAaJ2ElcScb3+I -qJ$CGFY4PHX4PI*b-U2+N#YSR,E*R3iH[@Cd`0&Z,E%B`h3`31863F4e#V$TIaTK -re1E`'mPLE@T*4[d2HjV9@LVqU'hTVQe!MP['E6$F+L28h`@!)-c,%-6jD(Q)"2+ -3!,&aX0X,U$%MS%B@+bV3hi'PpQ`2Ja($Rl,"IfMaP"K"P8$+P(9`DHPL4L%*["4 -KR"dKR09j[V"mDrGNN!"6&`Lr2m[Gh@pj`QNXKa*XGHE9(L2CeJl3H,Rbb%APN5L -@"[EH(`hfGaNKK`@`lVRE)AARSaqT@N&lr[jN8PRJ&`[1lM+5!YBR!keK!q8`XT! -!NaV-d'jVEfchA@'643*4+iVXqU)ldQ"Cm"NjDEDGS',+5A[EL8*q1-I"4$Bb+6& -0*DC*-CeFlJ+3!$!C`+8jl,!bD$)'Jrhcqk6UEKRj#S*%&c-b[1,dG#Ke1KEc*3d -UE%#,*j!!bZS"3rU`XA%hUkBDEdjDGjiS,(QAll3B5`5X-EbPlE3!1UQl+#pVJ*5 -XI2(2@Y68dNZa1Rr@*8&qZTGe,p5kYDCZ&KC50jShML)+'k+EHE'*P21D$-1!!Sj -ZAQKQ*FT"-F(p,,jdd,$dk1*#VM+p`%3"m3BaYG+dEKZXReALC!46-c'G%00*U4I -@ZKH9`UV+SCJqbqU6bA!A#9immV!LH#Q[8b(j@%!qqfKSpaHcFDKl16c2aI#k4Ge -'PBMke0%3Ec#,T!Fpm+Pi`'hqIJd5)55`EI1mPDCcfbhBG#Z,&iEAEH4cTXI,Pb& -Jr1CF6SB&+$LP5GPfJMIQRrH*`Ra)p@Gbd[!NM94E"iYE$3QiN!!,IK)Ald-PZEJ -R6A4T9TeKRL+9"-%p!m-"Q!4SCI-"90#ECU*9J#@2,[5lA+8-LRc[L85"9rf*LKQ -GSI)+&l05U2aK6"5U4kr+a85PhD2,El6!k('jU@ZZJ03'#m%EQ)UJ'$BT3Uj%p9Y -a"+TIb+YBA-MrdUS[6kXiT6@qXP1TqQ)k4+dR"KMQHB89"BS#SQ6SZ6C$fjfjdqI -RT#P8lmkj`2K(ZpXTq'&Qk&i'#3FPm+NbPT!!!Y+iZrJl2*SIL6Ca!"DqlY@BHA) -ZcF@h"EQir1FmpNZ4palfC#j&m90a+BJIPhVY+JVQQBf6)9)V%&IXDpLd2529hQ0 -I9Cp@AUdmpPAP#Z@9FHbVVlU99b(DfU111kN1hU)[h)"!kPpNc'YS3p8`+5q'`Za -Ff-)JXMPC1QjVl*JZ,@LllaY6!,TX@cX,ph,[aUV'hSe9qVY3r9YTbZB$#!fQr-V -m)N3i[*'&bmUF!1-FJFF$V&Bp)fV494DD0KNJXX6L6+'UGhRE"DQqGV$Akej4AZF -2p[UVQj6AhQ0H!i,G[+#m$"'lm5Jc&ZQ90d@Lce&`&8DPfG8Ll622JS!SKj-3bTP -F$V)MR+3M`QH!l3!6%i4qi10$Q'5C98lCPKLNpi4P1l3DAQ)#HQm%p46HS,X%TE0 -F"CIa,MV!IF"8k"M'90riC(M5$R,pVQ`peI$eam8'%Xi5+d!i6CLdACJH&QY&8A6 -R(%afQ6'2EV3LqklNm0q'5S5j-JLK!9p*Ud*)c)cdG`!BM(+(-L`U%LSdEFH2qHY -l8"(D@dM26reYf+S%IhC+A0G`NXejGT!!m#jYMUlR`(jTFq4$6+VqF!"*,CK$j-` -I$[MXG+b9MQdefYd5,hcSC$8!9'Z0mlhM#,$Y#c+5&5T1T*P%*l1DiadL4F%*)-I -iE`rF&UEfAh')9l`U$X#F5SXe-M!fVC9NCZ0NFRGKI$leV'#'MLLTKjHCXDlm[rG -4E+`SZRZp#%%-mmIiR'U4R+ZXA!M0[45V9XIa`H32Yd0cPE&ekU*H&,-&VB804Ka -HR0aE(mT[Ph-f-+M9dA``&XUAieE9L5jBQ5D'elQ),FEb*JihZ+!Y4'b*9BUdb[r -&ri[m$rk,([0I82P2`hm"r+FIP,8JK@3*lM-XQq&mp6$q%,43Sl!L#4B8"Ufa)Ir -$)F@3!'[qiG""$AN(ThECN!$r#iY14Qi-YbT*ZVS8$YmZTbYimX2B`VCr1)3(,Jl -MQ,P)UPh+FMPYm14[B`[@N!!P&X[)iZ6cp@hY)5a`FPHSkjeLSj%@3&cDaBMUiYZ -`T0ZS1T-5CX+h3E!R!-f9@ddYT&SdUG`'9'ZUjDpKDE'k"HeL5%eHM(+D),BZ9PF -4!!X6SS$f[M%JZU(FcQEhL)fG4ca1kP`VUA1jU(2jU(0GTXiPj3@3!,Y'-2EraYZ -%E[YrrHH0ma4qep93D[6rpdXPhFc+)fqD&M`U(NPd&kpij"&1[Ep`Yb&f#@8YEAY -UUbV*&@4b13`M'Ad$2CB6Uf(Zl%6BZ&JQU%"-+TbifLcI3$`Qe3QH4&MaBa+9KFq -N"6bFK$AY,I*MGZ#)hJY*KL#X)"ZFS15EBAka&*%iPJp2dZ&40HU)LeHd*&,mmGl -e[U5GJ*NiARY*JC[RN!!qY3kQI)P-K"(-T5kPI[C`f9pqEiQ6ZP5"BlEqKFZaQ)b -U5$aq)Bp*b"hKbGbl-VU)!Y``i2%UkAL!$pp&@)YN2PibNl2P(+HS[jZA)E"lTSr -$[XSMQ2+Y)##dRIHCc6JM%9!'BqmcfFYb1ZJ2Ec&S[!+&BMIL"(XXJ`XRL%r-9VM -*VK5H&#IPf+d6(`rJm$riC,3D$Lar!$NcQ,b"T0P"S**mR#UMHd(UGN`'Rlm2B-C -Qh(Y'B4(qLBRia*L%DqG'J2m2ah%%&`8JcchEL-QGLS5PI5cf#"GSflQL##Ra-Jk -`F13Im1IpV$f94hM&$#djVE!cc,EJcfCB)!l,9IP-5!QY8m1Kk0+L%06b[H[*BA! -p&IJS&IJe-KiiqP%(Nh)[G6FCDDA1"`!#3)-lDbrqSmBPN!"(ApEHQbqZYLf"S,I -0i'#'!#p'ArdF-DMhMA[I46JqE'G`$N"Hf*M""ff4JB`F$TQJ3laCZb0I(,%Fl*! -!UL'(9!dp4*ES'j%[TQqN1$,NN!#k)BI8(A2)'RdMmNEk4SUM3`kT(A*)lC!!3p4 -Kqb"TaBXmA+md2S4&iTPCY(#bHIID(IF"BfE)-1(fmKj#%AF82e(9J1&T-"$V801 -TI%ih(4DC6BKXBZpkMh9QU5#hY'qpllchp&+XHYL1RmVqr+)P0FB'M*!!qMfB6JQ -F5'r#0-VCh40rpZ(2DX##qcMpa8aNE"rBYd-F*J&XQB1kfJHMfJj6hSHEl6rQ*"R -F+a(ZeS0p@)D`HE@"lKTEXI[0hR00$!IDe'6U&LX`Ark-"0bh3Xfa!ZRP8'82-fY -pib"AC8c#HUHiXrHGafHl1dAZS#ABc)S01(TD9ZjAYRi0`Cp4R,HGmlf'LkpSj0H -pHRIJ`q(+&p8l"(8$-'!V8Gak0e$JKQKU31N-bH(J[L88R8DG!-(e9jZj%k#)@kp -5`R4c`mL$`3k(VQp*Ki&%+TkV!-$Vj'9CQ1SlljabqG9HA1leb9!Kp2ap-[AVJpe -jBS+lFdB#0,J*TI$I#Bj$"d!4I[Dl)+f!EHeiFG+A*!$Vj&ZRNDBpM344Pc(If,A -`$Ak*MMD'45G3"%fimD+`6MMD-dJ1!`MEaVFA)kpqk3k1c!jRjDZEKSIcXR%*'3Q -#hPhqPA''q9hRXr2E,(2G-2-p!"Y1&+CFjh&cB,&#aNB"QkM0KF$cphPMFpQXh$! -`Ubd'a`#401#b#a2k5lml+heEM4!+[&jF%[4eJ0fE-KYhE`+K,Q?"q1B2'r!" -ZAKcGU&B8!PFLKlmN%K*)dX%pX4#J$hAm!BSjc1!(,R-$1j!!R'#JBV+BXVqlS@[ -"TK4`$AFr1%6a"@VSNCEBLe)kZTCKUp-bPKd8@I9f(BjPCIfpI(9CNAcVARA*D(! -XH&R1M&9A%ANeLi-f'(&e,Il8F)"PR(qN4,*#(r#1(cNX6CLSL`3%FF1JbjN-p1Q -QV4Ya'Gqif-a,S0i(),STcbb)Lq'"`FI+PekUVR5EaJrrH"rFP@&b(13Jr%ZLmlP -%%"FV"bM!X'TV6RS+[)"Gd9erkMDpfhQC%3*"i-9@i5CCP4Tj!&1FBZ%`HGMD*&+ -IU2ECkMf6J@IN*)'Sbkqc%3)V'D[HbkD0DTD,80*`!6#`fXHUbjLB6%Ab'J!KE8X -R1[q!iX`frVfcXI1a2&MlFEK3`UJpGS+C)Mi1#92ZZ2%FE`i*`A%PN!!@BBf$#-J -)%3iIN4%h%Bq,4$UZ&'mNJR)$iHFj6h(aarJT+Nl5aklLjIa4GA149eH"&IbTP09 -ekZ1*$e(k-*,iS0'(UF5(-(fS5(b)d)IF@%$0`+4EUNY8BbcJMV,)e@C-)c40jCJ -"qjeBKQVlUmXFh5D-a&H%&'pC`3%LrlJ4f0)*Sh2pqVk8LM,G`B9I-0ej-Q8,KE[ -c(hC-"TRTDqZBP'KD!"AFGK)JDIa8`e1cV'CcdYGXa$Qpl@6QF-H2fC9Qqj%hS%D -l5)dfAjBkX`(hQM"[a#2AED)059N,8E5bF[3NDGYrJkjF,N*d)93)Zib&25AcQY[ -k3Q*0%pX!L@fFa$D9aNlhNYMk5'ah5@c&*$3(#HdZ#8dPNI@UMS5`6LA%0*!!%0$ -+K'Lb#D%8)"5[)T5HK&$-K&"#3LK1kQD2fZ$!RLN%qYXhh)*MAlHReD!LmQlFmTI -(AiVe([ph8cDpFD3Ha6$[Y2LlI"1T@q`-1bf1q4YmNR+YXG&Ki@k2"MVD&5QkXPV -+d$NTl`[FL35%"YA!l',BdE(LeZdA+G#*9*IFRP!J&d!8AkPa2F!49S"q'K-jiG) -0KabiVE(+HEk6!@KXFDbkj[3jfcP,5h@Yda+ea'TM-Gc815dJ0hQGh2#@9#ZTM2M -"Z[p3B*TFL-NKM*8D"3Gf1-(AX41mGcZc5iVL#k1lXA$(5,KK%ZZ-HKQ1mNJYN!$ -$1MNYF)9H1T@jUN"`)mCj"RF5$k3%)b)l&FLZiUJ(!'(*Qq+eFSMeB"GjHEpq%8r -m1rK-4@IrpGPB&DS2BJK3PB[BcS$@baEA!`+!"%$i@i)$de)V*T&MlR*qT#3m`pp -NFD4F1[`+CS#%"BKTFPjX',!9Il3D[DHD#PI9D0&$",-0!QBF4+'T%CUBP"*dCYS -B([Z5j,LfP)+1Lr5k5!q@BL-+E'Y!'D[Tm"4qaQ5Qf!)@TQJ5kH'0Dh(TEDFD2Mr -LHJ!&),9G8#PhZ5[6MpAM'JZUFi@0@qlV$(2"42Sa1iX%%LGd!3B210X[4MlTCKF -8ZFe`q6140EjSr`A(,64)FUjURrkC#2b4B--(02Gj#1$B)TbV(Tjj@ecmX6kB*Lp -Q06##TK(Aj#SMkCR!!a$JBbYGl++r-2-f90i)c,SB(`[dm6BH'Bfdi%-cICK&mBa -b3Xh(TT(KjG8flJkaN6[lj828S1HK[JImdZ$$-V,d9-1VCrRbX4%fGGkmC`c(CQ6 -2UBC&QhMP[5ClM(r#!dJei5Ijkl-b*j[aNj8)r[Mi(r"0mJIm!JqKJqQIlG+(Rl! -mkiI4qbB5'dbiq-HqG@GrC!h)0M[kMEL64,CAdmd%hHc,m%hcpm8$FITiS-!hTBr -3ak85Z3SIfqL"BRU!eIm)NIhY2#8fYj`Hm0%$Hm6#5)YJ%I$#+eKHZLR36Bhbd)H -+Xp')qkCS*%8hCqN'F(md6')Y&8a,BrZ#RBc0&"""(``%+@8R&YRmTQF!$-9UCS0 -422Z-H('ql4`6)!2!HHa!f`AFf%mel0qZ%#-Cf@IB'Biel#!6lfHB+,hri`YJLlp -&iPh1aq&2'ikmaSk'#"I@BR%2,AE$p*IK`YYaB@GK2YV1i!)$4`!(l$b*5Np+!"- -#D-$$jC3-fN0(PjeU1&c+B#pkF4HTMQ+Z1KT2H&PThCjPq"G&aSj,q`aAPTf$DV) -@%1*VF%$DiBiV+P*8[C8E94PfG*S9F)*i[kRM5"-(%%V&MVTdbCSKPaiJ`d'DhV2 -b5Z5UaJX-8eT!Z53+,E&3Z%"[,X,LjTcmhN"X'4h`@jq''a8T"i!-X@@HAQ96%k3 -3l!"a9KaTiL4NE,@6Ua6rF409+RiP8P*rZ"jEj3IM2)RY`50ebL09iL2%,5DQSKT --A%UZfbmZMLN['['2SQZPN!!F'1@ZpI6D%HTD5PG23DJ,h$fI[Mlb!$Hh"l[kdeI -SdkcSk%rI"([jV&!E6lmfmS!*+LUPHX*%6RqV0LZX#PA1hq36C(BR+E3N+5+B+lB -IBL@8jTb9&FeVaRFhNjXr%Pd64FDbpYPK*TQ0AEl4dIKcA3hYdp%ElBA!P[XF6N% -"a%(-!XphFT!!ped8K1adI#""$V4VDBdC6-90HS)EV('b!Da6KGYSX-c1CHDhGaF -C+h$Xkqe-l#Q)b-K1GPVh@8@c-f+5f'8&+@Tbp,#)KQMKY!C(TP&%b9pRq`rZd3E -#D5pT!e$&UErrNY3HHF1B,c)DFFQrI`1(K!I6QeCVCY""*%i*S)PR0#5Z&2BK0X` --1aV@XHUDpCrd$D2E99(#jA'3!#q6(CPqHSBI+NKIB@Eq4fL-)#2i!6#'Rh8bU(+ -k8H-Z,MR9Q5a)Il[21MPrl+@U16%k`563DMh'35"F-FC*INkc1RZ4F,)Ar1l@4fa -RN!!FkVG`JRidZ2H[U1#H3R(AJJ(Y,!4fhfFJ)KY[2,eJjk4PiqRT&$e8LiHH8QF -4!JB2IiN+hf`mIE[8f(LiRSZFEaG-)k!F,CqlYIH[3!S((mr`BE2XKP5M,+&2da0 -J(QqKU8-0,G(i-K$D8ciCZi4*V@I@#1c@KFTJA9h8`Ufr2-QS!MLVGl-K6T*l!l[ -6'V#mER(f`U@cMN`#*PF`Q54(ffQab3&me-)(80-DqeZ!*(pA(UZLiUT$K91aVa[ -F%%5Nmk[5'$H#mA2Xb!mf$q*hSUJc4B"c-M!fQ8A('C-j5UIAX)X2Xi8X,"#!5ML -F0EXMKr*hIc)3'1mHr`Q+R-Qpk8#54VKZN6YCTGiXL#$!9V$*%rpa'9"kE8&dff4 -"6`+IS%YqMBf,@664X%2QG(EY9-2Zkj3fPck9Q9``hch'2(GXVpPi$Xj#6(jD3AB -!5IGIi)SH18RE"l50,Tp6$F2HDfRX@'!#PHYYN6N%lE@p*eAGQ5VTH)0"$S6X+hN -V[S*U*SidRqrNBj8,T`B[2&Y1$*[Z,,#(cA8-KBQ#c&e'3H,"M#%+Ne2cYe#8HqL -cdf#(*K3R06KQGMQm9+,CQFa#j6HcbNph$3)SkG@,PjS$P&NP!ppEP'3l'ZrFB`H -3!"XAU*%@3Ad`-QbF%fU&I(CH3,"`GJUaiKT&JhLINjbBl#53!&d)@ACGM#V+Y*! -!dmA5%+GQ)#Dlcaee,+U3!#R%UAVEZ*Q`dSKL$jU6XR+mcfiiTaUfl&6)qZ2FBBj -F3%%JNC!!bDY1+KkcVE[aeQfKaRqKM[2((cDTfZ)2Ip1069BTKGj+K@BQ"*j+#+F -GiXC,4j0iT,&&TUCPpBiK!8UGSNB+-rF@Q4NHcEE2"$%C-pZrKc!C+'0B6b1`!jI -(JFSfFd+%!E*Ki6JED@[RS&Af&2)Q3rK41,k*e1V[N!$%Vr,MSdGmH"3I5["3%)+ -Ubml6"5ek#S5F5NY*CCMXV19[T`EUF$*MpkU+6hh0LfKQ,lh'IAq[jj)LZ-G9"cZ -$R80A4A'RcXK5UEUFjh[2Vrc8M1-bhaEQ`-E`b5dfJ3d@Af'a@cRSMLFR$[+Nc&% -CSBTE91X-B&NeVL5!lX0)d)!ElSIerPjI!8CS%YYKGdFA,A3305!6R9Ca8iN1F8k -U9ibI'c*QS%bbPb@CeJSbq*a"kJ0N[a9N[pAJjQG`T5mfMr`&M,lHb)2KC'"VNjU -N!,)HIcBTEN0@+*!!4Qbp"e9p$e[V)3F#cCh&&P4mr%F8bMB82VZU1A(`qkc!U(X -TcIP*FI8)a3A'e3Ib-k-EV$,`3$Nj,Bc&0Z&2[Cld"r[aMfM#dXJK)EUHrDUT1-+ -1jZ!b!G#L*[BH`-[YF&(G%bZ(JqkZ@"QlkFC+m2,P@!hBSD6#L-P)P@&h@"T[c3l -Jq*IaCcrql1)K$hl*T8Z'A(U4,id+ELI5mR)cZT0e,2EH"Xdhi3r#M!jX`'G-9Xr -Fm@XHk`E0Bam111k)TJYJ6jGpGaQFP54-UFBcc$q0@1l*!1#1a'VBM3VSa&Y3%$` -CfiDP`SQ@PJ,f"1K@YRHF'pZUc05@p`,dc*S(Ia!ZiQ8`TZed-DpbXCFpeS0YD%B -!TmXi91'QSh`*L#pAL1Y0d1)Xi-A"`$hfrZ4b8N,Pa!3$U2cp@6edN!$-AYG"c5` -A5NSG)2-cdE#K6$6)K)T`*K51bUre#i%C0JHV0QIlM@ML9qEEM`fe3JeCLF`B#49 -N3!8C3JA&UN"31)bU421H'XI*JRh$V@QjlX-KLQLplP*P2#&E-qbm`Q(1HL,9DkL -lE#S5hD@GP'2lm,[#U4!2e!Y'#FAd[M'PG*F9"qN1bkJlb1!hS&5b5TGS9'A`3fT -ddh*C%JZdQS&h0Lr6[#+Y8R%C39#LUcd8Ble3HE%9KA`FkNe*J2D)KU`%ha3)QKX -P81i9YBq1rJ3#ADhHR3P#YAk#2kY9[kiQJkF8PGq&VJ"50PfUZkB%YahcLNemY6K -36DM9),2mRhLS5cLk)*U@hl0"Y[cPf9L,F$[NJP*8ldr`m'U`AUdcad(%@R3LKK! -B$"35&pF01,#$kFhMp5q8jJ$li$KR2Q*$qPC$Ji9p'`B@@Z%3&'SFQ,D2!VC")i( -D3bfapC`BD,!-0YD2(I*,RqE[prd-E$,FFPCbF88DmTk3!$[DN!$h[FC*(KKIN!" -58`IS)eLVf)(R1A&l!'D3!1+YF0T+I$l53U#!,@Z5fNB+m8`d+iM1%NbmcAm0a%E -+I@FdCVXifA`PL&4cQ"ZrFe06r8JR3kVlb-%594)ZPPXXMpSBkJA6PmHLd(q-a0T -mi9GDiCCK8jP0A3BRJ*qJ8MZj`5(FpFV9EFkThUQ9V84UITj'DN65JiP0q*8!(E" -0)5FR-Jc4Yd%0Y-&G[e4G4GX2B2YahKbD$l@FLD,6-`aKmarh&ELTJ-H16j[idjN -S-E'rMDe48c4p#&-C55PUB@0#+FcSS$I83#-8CjE8JSh8JZe8`qrk&(I@0A"XKi) -N82Z#k"LF6T4CpE5L(MDQ+3Gad9r`4HAVT#!f#[A!3S&bX((),l0J)V0Cbfq1S`+ -l&!9Kk'EFEhNK45%c[q1$5U!Z2P"(+@NKZ[8HkXa$'Emb$-YKe3%D2TSkKkcNP1L -DS8hRV9C5(5DTMT3#pRd@B*q2`,l2LG$jTfk'-%'1'MLGk4QJm(L!i,jA-N(9@G! -8Z)mhV!0q6S@TY),pDhGd-,L(d(A(`F'pL)qGC)XLYRC21%NJYE32JR-m9!a[j'- --!-6!(j*E6i"GGKR#hG&+DX92m2j&NGbAQeK9AAeAIUUij+88`0[1K"+$A$J*%J+ -Vc`B`L56R[fHB8'Di+8$,Rf9KA9jC@23RAmB-lVpT@$L'KDrmf4CqT9CCU,LE%Jb -G"Q"N$JjJD!,!X&V6!3a!B8T6,aTmC*6854XA)B4YC`I0mCGN1,B(K1&baXm$Deb -@($*RJ[dGkKJ#hZ1h*c+"rSj4lENZ4cH#eaiN3qmVLG&Sir(CjPc!dF@[prk9rQT -Car3R4Z"`*lYVCqFEMbr)i(AZk)h(TfA38Q#&L83!'NK-X-+%QT!!`CZX6QR`T90 -3m1@+SX*3-@UFP(fj1ZCr!X1)C9J0dk'ebT%PbS&ebS&e1(#(HJJ+Uab9LZY(-AY -%&b&9'AeGG&hG[Abh"DTe1eK!#k920+Jq-!acr&"`Mf@PM0j"QpeJG!#Ya`*+Nb% -F+S)HCD0*Ilp(4YIb"V%PDP#QE+N+@pV,lU10!`[2BC)%fGKjc-B8&4j9##l8FRM -SeL+lD'Y"fTU0'K1"!5EK9B+df#"DXqek)Ap4jS*lhaNL[P"r4diVlhCdlAd(iJX -G[Tq!+L!q6URcklh[k+mD),j#k)V'N!!'J533B133`533B-6@jcIL0m0JRhGJ@kl -"4aN@8kUd3bRHZ+M%9!9j$+C3&9l85P@*8P9@$bhNLQ$dY)cjlrMBX*2S!hCeM#X -lKqTYZ)10c'!MmFBlf-LL%)8JRf*3%bb`qQqaf`m[H[4rAj3CIpq8DNdcaY-,B6+ -Fdl0K4lF4EqaHf-XrF!`SB5$ZCT,6,`bAUjIi3k*#SA4c'9)Ki9JB3A9@*VCkR*[ -XdPC4C2)G84aLUrTLhV$E,U"jaDAZ8I9a1%QdZ3-E,'!30*J00q$GM[4DR&0PDJ8 -2%*D0-aJhCd(B%rd4(-S`#@)5a#5!LBC*'*-!*KrrL&h)d*!!!T10$"4LU"CaUI+ -K)4SjV&Z9&&8+c38d-$9DcMif[qb@C`+U'@jBaLS-rA6,jec46Cm!l4QEH$!SAlc -!J"m-&YY1ZQ-E,)0$0eR6i#3d(QLBD'$!b-KRA'lcqlBVF!d`'HbU![0B-2,V[m2 --XY1&",8r9UR$(h#[Zbb5$!@rZXL1SR)(3C%-3*jfmE"HV8V5Q0b$AqhN36EFHil -BM$!HVRHR(V'"0)&mEH9(l[%!IDN1L#!`[3+1S-ek`V"k-arQXl-+K'NJK%1+'J! -VKVXU6lqG(SFBUJU1ikr+#f$XAR&(jKLXVr@1&k9qrT%lL`(j%)jiarZ3!"$P'cJ -,iV84&#q-lTQmi8#bpJ)ha-#3!&miE2fSN8TVA&((KE950-5DZ#+0&"FSK[blJiB -eDdmer0%Z"ZrQ!M`Xe1&cU,+,fB5GRB8PX2G*hq03NdRIedKT9MQI!-%(P'l%"b` -rYMJXB01U6)Cf'*5TI)E6M4$dj$`'SAY2Z2pN!q1f`aEDUSY$m,E13[jC2#a6#2p -`h(Sr```HFI-G*$`R(,LJ`CqJd*!!YY!'Ub+D!V"6jK-VXI%aCjk(i-,a$[eShUa -(kmF2EGY19CJ!Dj-5X'pbFpq$Y#D,P6TdM5iF"d2%$$DlQ5"9J%"BSN)!NUYA#5$ -Cem1%PPk08@@EmA+YH-R3A$LY)H6J)&F-+U8IMa[Vc6JUQ)&l5L8AYf&Q,'V2*&q -d96NDbH,UFH@b&jA,kLq4f+M1+5pIQk6Y*&kL)8+eUEbF3DH#),lAPlQD!$SV,VQ -,hGc90V,lPiR(@LRY(')"SEY!Y"JFX%jU2q#NG*J!ai5VUNJ3TeFQ885q[JGTKG, -Apb#4)MjS%G0#VZ4BBL&AbdMFFNAL[2h@'i@VbVBaM0V'3ki(J`@0Y"5$aQ%d#@@ -'-+8f%qcMQXNrRCI@'B!i(1a#"*pKpUA[JGii`P`dK-RaBX&-QQ!QHf%HMl-kmE1 -DC+@f5RQedZhm1fpKh&MZ5rhQ`5XVSXEFeI'2N!"!jp5#P%mDrFBbCRZ4d!@VeI- -NTCR$a[e-2kHHH4#KRKFTF9`TN[6X#[2T'JcS#!E80i0!T0CiM[rr-VZ'I2V(bT! -!MjrkMDZ68Km!mY1lI$[c0JkV%S-HmX+haP&YE5C(V#$BbXdPI4LLd%Mk"0$mSYT -V*)@Ui3l5e$PeQC0jd[J1ZfEi[90`X8K"MB#&`bFdU4%0L#E4Z-AGbK01PT(l*G) -Yl0!!X9c[ip3B9r3d%Q0J[*()eicckcr2SP1UQd2D,FL&*p`,M-qi(ZL*,f%-4I, -CHj%2mHH'@ckEMrcjc,Z4YEp%X0Z%B#RPA8VLK5-#ESTSm+CkX2GqT+FIiJkqj@l -IJi1)[Bc&cU3)fce@m(Y10B3[FD2ZS`6r#69Xrq6[[*Pa)h8`i8FkM&i5rPS5q3N -51!EJY,j%!Um5AI$,+a4KcaVRpD%D[GZ0hRq#`#0V51!SYLpr,5&`[[AT![pbQ!4 -H!p#maThr1kqhpr2MF"3)(ldKZ)Lc1IE1`,d!3'J[R!Kk@&491fP`d6*ZF+dBKT5 -(1!afjY'TVZJU(de9%LE#bb2I3)9J9PD$("6+[,hh$NIH)j2",BKA#T[*4eBC*Nr -N)EKD8`U*2Rm`mkbcPmNZA#*@65C"XLUa['AbBh(M,[kj$6F3fHBf6L3A*-`+&rY -4,CZ9Ea5*YjZ4&R3Y-'cTJHVrJ9250aq)CS@!+AId#5-%561Qb!LVK!Kq9(p`)b5 -&*'#ajCkiXjq)QF-`Z4R)aXpjY++(e1bTKY!X#'N+E)#$NfH[GKUpJX"`3b)Hr(2 -cNc#kr[@Ijd390i*RJp-[e*Gf)@D!F&#md-Y1mUL1Z0"DZY!V'%bfNVXV,S5+4Vk -"#cQ1ZC!!$4fkRj,D)H1Ql-&3`VemfF`,A*E"9%Q$Y*!!1a`P+%$X(e+KFJ*0-!$ -"V+eLCQe`J0(@a""Ec%#&9SZKE(dKBSefL5&Tq3GGd!U4eK%MaI"MR6XRR$JbrHj -VhlHT`i-K24kiK`edBi!"#ZLC562-`i+9UP9BUHX*0UTQ+"Ye*D+Q-$4aYmGNYXl -43BDJ0RE-lYHRdhNHe*@BTLB`6A-+de3bb#DKS`hHP"L#!HY3Q+@Q",08Hc"QL3Z -M#)@KCCJe3MIJB@jlK",(j`h-BLUI0IUm6S6LX6USb%f!2@!qDCeYCkVldYP[r3X -!qQiQCCk`QN,cba6p6+LK)NjqY@!B!RR6#J'D!0F%['+K)al"kkDXTV"49B0X&"T -r*QP3K5PLGNi6LeCp%"DYfRQHA3M"U&9lQUR"BKMZYe"0N3QKh(9@$&h25H`AEb2 -*$*MBL%&$,4XjiE#')E2E2GC81l,!$b%PR2+NF*a`N4Ye29!)!BV#lL5R#K41V!U -hcG`PdiUDJ55`m0(9V)D##c5BEG*66%8*aEjZ9K5N4f9bRE)S4@K4LY"24DKa%IS -(RULBda4@%-UPVDQ3!1HJq4KQd*SSX$5'81jRKV"eb*!!"4`1FGI'J,3R+kjLLqq -JQf*E5U"eZZe#*ZqD`Q$#+AC'G[r4"ik99pda!+e3b@rqB[(U1!2HRFm%hRaGrq! -E)6#+KeSaHE$SJS8lBdD)0jpiE!j+a6mjrqB&rS5Ka+0[a[$T"`8T9$dp&%H6"BM -ZTe8-VN(YX4U+,FYlY'G#EllHF"U6`*XhdJl3"P2'ZSZIr`d-XK['dP(mqG-%UfE -b3!rm`$FaR'YX(5lbBZ%UL"blmk`$Se2p'`a6Dj'6&G0A,TfGH4B2AF5IbfjCrhN --ENYZ**4F1)'de-ABK`"GEXc`J)fIKE2m5UL-#dKGA8D#DlPRcMU2!9[1Hrf!`Y% -JBIdB2`D'aV)fK831'X6pkYVM#l(eF'*YQ6jlZbLfaXF323f0l%&Ajm'X9'IL-62 -a@)JIJe-#A3K$$#81pHbNa5!`jJAhSi+TS'eZSiIRf18feSV(Yd'G'DJ@L%X%TM% -RacrbJ&df4h4e+iE*eG8YAXf)SB5ai!3Tma#6%eD`LD'#qD8lm4+*EHGR%S[kk%9 -B%*UMPUh8ArqDRIZdY)9'fX,`83ZM3aDQA9#@T#e-(EY3(KUb-19-0)QMejZ'[$E -6MVf3!(DXrDKM,`eCD"mmPSGZAllHq!brL&)Ae$mC'Aa)$$l#j+b!&$4m2ZH,-#K -Z0Tl+4q$Ni2)lfMGd60GZk*M9M'6ki#-m-$4B`rH)'@E`S*PBa8B%*RPL!Gm9a8e -$35Y`3RMa5N`CYPJ-RdV3I1`a(N!fX[8hJZN!Lf-URAlakM1Dk1)mS$J6#S!1S5X -a2&i2-P"#`iGJ+2MKCC'X)"B6f`8*SB&iEdTc")dI`3a9HIqildq&'`Yh"N@"3Q9 -1P%&P3ZN%VldpK!AP#r,fa8A444HCG9Th%LkRQ%6+LGd6VjVG@@)%CrQJT2Qf9`c -MpN*(b9f#r9ahTNpK4)2A"Sq6Up`Z)U`ZX(XTBSk0YiF%4NFGH%)-)!Tf#4AfpL2 -J1,ef$-2+pk-T*j3A1m2b3CVB@Zd,EQe1K%(VL,dRF-6PYEMcY"80JFTbFZ&"pD- -e(0K#0$GQmQU1!a0QSLYhk4@5&d3abGG`9'`&+dimc--63e'Dk8'V-$ZhLDB`PH3 -#@eN`e4iL+QN%C2-(I3rkfiRFY2[fTJFaE)6%D2Bl-8Jm9,@IKi%A'rTU#F%3mTF -mr2R%`dqQ2m`-5ZNLZ66MmUNZ%@`@A$cdqhp1rfVfQ3TT8Iij!S"JJL5Y[-SZ8j' -cJRfJ3E`jPCSF&4!KrR%$#MZU6Rhab@@jUdESlG,-Z"!$,rAS!bk08AJ$`dbC`T! -!q8#[bB0XB,L0+518EVbTc-L$`SNLjrFr-P*h,9FUE4fC2&c(0AFI$kYpef,VF1B -cJ(hE6MbE&df8D%Vr0!K063j,D@SR)*UR9NcY0'h&e%T6!p0@QMSa0@LD`G4*dab -Q'CTQ-Fh4G"ZQ@CSZBVU0TK@B,Y)dMfN&63F`cG0d(0-"QNjK1Nj6&kC601h&e%A -62NalD6S#jc0[*N$0KH5rDTR!3-Hc!p,%(c[q@2'R&Am-)c#%2#G*M,lLA`Na1Mq -M-2,Af5M`Ma9Fd0@0VN5V,b@'01*Q)YaG$N`ZemdMb%QQ9!&X!TKbr3@-AkY0Ik' -6pG@ATUm3@9q,2fZBV(0Sk5R'E4Y[b"h"m("II,+D0m'[d,flp-ArmUhE[cTkX@q -@Ye60$IlDd,fM),PVBb&b$8M4J,J'QRV8ZMpHUc+KpFhKSi&%k,D$,A2($Vi-bMb -)8,d$+DiLCekimRrX*J0PL+60kbKfr[`[iJb#$bVB@RUXDi5JJQS,Ak,k1TV%[F2 --4AA6%Jf$@Gh&Pk[QC($cIjbY[KiESFZraUm4aLrJd(Tak0Sa`5Vb-2K`@Nm3#&) -`5*VVK%)TYKYRT,0AD8"G0aV(J%D,IHcm@DNcQ#i,%BqTpFl"%"rN#-*LC3AQmJ+ -81N1S'MBc8JK-9@4jG*26@dpkl`N9#i@SX154#M(FMbrUZ+9mCMAjdZ"RT$H54Um -$)4&IBT!!Q9aafK1R#kE5L0`"85L1Xea-eCH)ZC,9HpQ9B'L+q+Te6!cC("I$KL# -4fhciIXDqYD0`Mp@P-C!!iq(!QT&+B@GP$&&$kDbc((JiZ[Q4KUlTXSDZ@AC(lM' -k9Cr4b`2m,1[`,BjUEZ-j#kF'h5D'V*XbJRT4+GZXC*+"3VSM08T"R43A,B$jH[D -ie,k!bk!K+cGS56)!4@&1Mp(&a@#3!0YcHTVK+MQYFYHmG'ff1%h"-P!)"eSBb)G --&YIl"G4@!!-"&iQ1D@e$afhaJ*XH'-V)ijm"Q95''0Gb5U*m2('%58b#BqZA-(, -3Zh+fX4d1`(iMH,Lcq&VE1EfkbN&aX&Ehj+`10SD+bIcVG$83@U!2hqE$3G$X1N& -M5!eQU#)S[jl*F`"2`CjVP0f5+T(i-MR`01B"`80%$"R1h([XRJcM$j)bMk(Bi!` -5pQ6)6BS0bm6J6K8FTR&bCpeQKR8bmM%-h!p6kr#GSN86@*3mDK($ZlcSNl4&%eM -88f3qmK&)#+P"4cd+Bf2r,@BXBMH[LJ%M8H(!+JSc[bfU'fJF)9,rjZI5Kdm5Jj2 -UJ[c2SB)Xd38C[F&3!3Qb4"&N+&f3!0&,p-!aJSbq4S)%k"5G&B+-6L@1X#F%b3Q -YP#l)9cZ,c@-&'@dQ3DCd%&(lB+JJY4X*3CBS8)a)DG8NK"Pq93M62%UBGTKKNj0 -0B+V`(2p2TTBKi$H&a'd2K'21j2%6*d(Cjf!!RY'KJ[V25rrk+aC8C@QDS1`3&2k -K,PV@c-GLDI`J5mNX[PU@YV5CPQUde+SXY4qe&153!*CqN!#fe-T,j5&DfU-XE6l -)dYZde*ffY)H@0Y(59Q@Tp9L$a&+ahEQdTDeBHTF@PVl``[p*PpaFRED`&!Y,!DH -hL(pL*'(-BGfBUh9MCK0k-YfBSf9Nc#9$M9N-8&)JZ-i)*SCj&0$H9Y83jJ")TfH -ljC[YB%ZrMLe`%"35M``GI16U)S0q6hB5e$,+V2'6ej8`U4A-EY66$%#)"k!+QmZ -Jb3KD"m(0mkFCK-P2RL+`Up9YL#$&`i)*8Y#KdA(@2JTLj%PLm5[j(p15pB"hrDl -cBr(,(-l0+q(FH64M[c9GZqb@lc8i)QJEE[PFSm(HELMi3&&`Glh,-U6$&$PlI`! -&cd-QXT1#khaZSaUIZ6IArS9ll$l)c#BGf6fp(`peLSIQ%)`j,P$k841$Tp$QeL# --#AY-6M%p&8GJ--!Ip&#%!*d`[85k#X2*96#4m)abec*FF$+f*eKfrC1CrJNr8i+ -9IbU&`Y!8f,C+"a*iN!!a[!a4Q!`JN!#CNkG#LK#Nr(-5Jj3I!XJLac`Bm28-(&H -SX#fR'QScY061#rppJ*-KiR+eScLqiCphdZZ8r[QIbqPcK`M+DC'&2Vf5pQN'ar3 -1U9V[N!"U66%)c89-`jf*j'"5r%0-J'SNR1hpkrmEK`JdI#S[qJkPh-*'A!aPaR" --'V`3*0MDfSb(H,"A!-&Mq&FP1%@(3pH2$Jl)aJm@rp4fVVMRqASH-#GkM[eA,TP -EhV4J@'4TmJFd,iEV)p+5`Q8T03L-mcpqa!eAm2%Bb$aU#FDN,$EjRcXjf'ZfNZ+ -HSeqM+dVqjr#if9mXaNEbmYFje'FJ0+-X4Y-NkGA5YJEa5qXaar!`U5R4G3%0)%& -'ELBQ'SQJ!6$"&4-`jhDNQlMaBmPJBq$dBEJ!N!-JVd&%3e)$!%cH$e80CP35!#( -LlN6[Y@FpkUdjQZ*FQU)rbRNFTIB+`cLGdXAf&$P2FhHFaYbkADLfGeI&YMGYD6U -XQkQd5K'@UH!i$X1k,-X5-G4Ye'QD@jFe#@&B3jMkr@%-%DFMM@P!M52prU1eprI -r[Zr[GlrVpdUFjhRffHFV(@8q&!(a!`!"N!-!)3D,85i0"[b4HcqR3%V3)8eiVNc -k3mI5AbA3!"aqGe(kUb([Rb)M95U9J-YQYPpEY9Jk!Q$14D(-QDk@*YRRhZ*!+$( -pdj!!pp&4L%!r$I$c%5BN*eHQIc3j)2ZEr5M+-IFr6UidV#2%(RFkN@l$@E+RHim -0@F5!XB2#2ZaDc,hP2-+K$KRmEQJC`MrRh#8c1$*p"*fek2"2,ZiTFPY#Q91$,05 -qjeHjqp1-AIJ*ClQGQE1mjLahU6`DbTa`*pf+hf9$k"ECXU$*CA[D1FZE&@56Z[9 -*BAd5-LIA0f(538c5$jfP1R4BG@M*,'p`K4`Q4cMfc2+'[(FHB1,I"G5D81CGLjQ -6eZ$R(3aA1VTKP+'!kc[iH4&"lNmGKl%X$(NITiQ&q&NAmMjm"Bq!)%hh!M%(&aI -JBJql1!FrYiHmX6jDd#0dV2,c0S5"fdl)3'L4Q2$60HbU0pc"Rf`SM9lU0KMip3N -qS-IRm!'Q$FrP!fbS*CX2X-dV-6kJ4!c`!59["NjBNSAF"`4m*RhElQkCPV@2$GD -4FidY#FHdIkm9#d*EE-Eq5h#%ilLfFApS8BBYL%j2jUpbV81Tq'0Z+eb@GBiH-qa -$%Gk(icEZPK#pJX)j@9hSl#NNC``!&1ZG9mdlR6R)kSLVF[X)1hkRkRKTXBQ0-p% -ka`F39XF+RL!5C-Nl)1bl(led08S-)mB,'-Vi[49P9HhY[Y)DRl8-YG5pprkL`PI -qF@)XCGe6+"cM+"$KC@1lSaE(GLGcphJ-q4#q2L39h8$ZKPK'(E9Xd)*Yp+1)"Ga -ELNQ%-bFX,T[L40#BKq%F3b4d5-5'N!"AGPSJTN$iFC@%-B#&15`jkZK)'Tice53 -Kf#%B6paZ#`ABdAAD`X4EZK,LM9$aHRSDa%I!EHf3!%)XmC!!0lU63V'B9#X#da9 -Pj5H+M%T0F4'@cp@8&CHh+dA+ZdV*UG)[+dkmk+[%03aaS0KiSZC,AhPjFEQ1mK8 -CbaTdR!M)df&kS0Ga4(0IFaMQ"q@)XArr@fB6Ff@j!mCDFT!!a9DC`m+kb`EdCj, -E8#'XNhCL2M$P0-2YGK8c32!pR(ESS,4ReBS$i*S"AHcLRZadIp2%+M%B,!Kd",K -ANlRBZJP%95"-cJV3-4%2@%)TQ'cQc20d$)T$%Kfp$)MpB$kC-dYSFYC1C%PTQ%f -(!MK$c2fdMF[%L,$iRZ*4mY`P1iCd0!%*be)5Q+bB@S68'iG!DqjdPmck`PfbI6i -@2`aPEZm86dr3%`&-qJDUKJDD5!EFb98l"YTbli-`5$[qQ!#%DrT$cQd`[3qc+CM -DPX[GAb$%MJ&!!b+&M8eDf*JPFQiUb!kAVBV%FK1%-*f*jATdc4GL'De0L+@iNSd -V&%3N8bA-"2d3bTD`5A3+)6GR%*K*@*dSrXD3!10Ek(3l`85-`BMRKj[0ABS6c1Z -b)b!+BF4$9CXa"XGA@J3G"Hb*4j+j&PZ@jHprBfCN82#lE-TY&iLP$E%$bc$p5PC -6m#Q1U-+#0ZC&b0*%B2*,GQQ,$NLkS$Ke`*`m9B&#)BT8HrXTUp9A9+9BLbZ8iZI -+P'+c8RkUb1Llk3+&@em@QlpNYr3#CBhUJ#1`Y*(*j*28l+SZ+ZK3,8L!kM%bl"1 -S52MJkPd)89SCJk%%()JAGR*525+q!+jUiZ#V9-3KbJIM",a8m354iDYHP*R6G*2 -Q$%a!,-K05J4XmY%aN!!2'UYl*`@V@ki5+MTiQS6$h(q"+[!#',m*ZCiPE#FEh-- -H2#F'B6Q5!j(YH[$CN4cIBSFSK,dX'91*!ZQ@)L&+$N-'k6!%Z@-T!5dBRm*Jek3 -S(Kri*[(81+LI!4XeI+%CDq!J#RJb*k'`F#HKi2@FCdlDQLKi28G96Q)AX[1)b"@ -U$J#bGlXhBK,ZRXH+hFPK-F`qLiPIm%Xjb,"rBG'!dG20$VSM!BbH8)U$FMV2YNS -G-"#LRG3a[Y0,'dDf3#emBEI1ATZ11)lS`KF4`YH+MYXGapP6@54DV-$V)RLB$40 --9K0!*TSDUh@HT3['2JK(c0'PG`U'1dl-[8"XZfeS8dlf,5*Da9-lILr%3&`4``B -5LZp"8-B6$lQBS)3[UJJ#FND-N35$P61Nj,0JAlN-I54PiFJk8-H@DKYY+Ep4)QY -6*K+ERNjdZ(6K[SLJM&22KX5,GER2HZ"8M5mPrrU+'9MP"kL,cjN4'kJ+2q*9iQq -UU4*R-d+%%8*0pdbZfK5N5ZmqYi`4kl`A`AJ6mP'U`A9p-)UDNJE)-LKm-F`A)El -`m%@5,b,Z8MXF2H(LKc3h3V6%%8FkDA5HYJ89V4J)SL5QCf%4iBYQ[QLK4G")994 -6QDL`U5+UP-4%&RfB-9FbQ"4+kh[HY*)ZDmbE9ZaQe8,Q6+[)(-Ql@G''JX&i!`V -l#P%pXkTm'fHlRD+SFl)E8fG@iZ"cN9DT'%pEhaYM6iq*ThY96iq`TbI`p%lqp)3 -3GZhTe,LR-A9Q'6hYA5H9iYf0AH'%f"BV-1jp%EBlL1Kc`@&*aa"I4X,f"jmPP5b -`DfC'29&8H1V!L5UPb2FcjH5"iTUAP'S)fcKbAlrQ+ce488EmA(@hrU[)ILpJDR& -FU3%&r4j99MEJH&VZ*Z!PmbdfU(5p#m5lb,SX3'(YLc`YPF,Selk05ZaTfBjXPJ@ -CV1(3SQB*8USEDMh5HUPYrJGhJ1MpYJ`aBJQ#CM#3!,*01LVjkCfdS)c`RMGjPSM -3-8cY#bkMSj!!YHaV(A,C`)*Zpbil#@#PEdJ!+cUIJ*81i0je8J!V(@+3!$k6!&E -dEM@`D1U'!3+@H2bT38DQKIR`eE#-04QN-`r)ddUrCjRbNSamNZ1Aqr2-kl1#I0U -0X%4B38*p4DSRX@ZQMp(ej1rleaN-qbrMf[6$j`e5A$cN`DE&%`2X@'PSiGXLCrB -VA4NfSF)&"D&Scj!!rAMABIpl"8F#rhrR9dfIe(kVri%VIahlDGq2KamqGd'jYqf -qj+(`8j&R@TpZhY2ND(RmdEpliQphrdh(RlEIfIe[hVdd1KQmH[lMkqqlVcN2l[e -*b'Ej`,2rp#q1rGceIirqMicrpZ'A@DG1eP6jc-D'%rYH1P"59'cpSr++XZF+IeE -kjbrqVa[rmhYrPREVcEbFLfIIcRhpmV0[r0IArL*ld6Y[,I[A*ImbqapHq+IRrrZ -DrrI+[hhe2hrqAclplSV2eRhlLmaYrc(e1l1@,[rlN4q-rG$lIqEpKirqrCE[rqM -hYrrKYRqmicqYrXdM[hVXMcYhE0UmpFQ0[jlrZlYr1qHKZAmeq*F,(ZcpjDj[$Rc -YR[[AVPVjpIAr[1'ZQI(TUBP[,&kB[chG)+5hZ"!FmlNLTHSjPZQV8JGZCCeLR9! -D)F1VXe8qJDUG5$BUS0i(S!CC+-Pi'T@-FAJMkhA4"2(Q[DX-QEiNb*F!XK`"%Pd -B(qEhf8YPl-Ilcek`3`P-L$Y#)CjeB+HYdV0h(ekllVb9B6-(Q$%"aDE9EV%eS9- -jc,UGcPYQdjlh'8ZCB4-Z@f`)h4dIJq*KB65Vb*-(TCbd%M-8#A#3!$+d2`p+%-G -ZrX"RPPPXVA6JFG@"(kX1l#0Q3mqDea9+jeQc0$4c4SCNEeM$"h$)8p1#L06$T`Y -I!A0@%HN,1k%Jq,PMcqB'%44Bf!ZhYS&pp1XC@dCBe!,94p1TQ"pLUUV)k"+Eh!h -d'%6r84UJm`e-(9CG0KN*@,[TiS@6&KZZY324MQ[,F5f-kAj#*0K16+C%pK(5(Sm -XIkrc9KMU-5Clq@6U,6)jQ+m3%-SV50(6qYi)UaT'@0@`m&89ZpP'l'EK)b([bKR -"EKBqJTm[91aQQjVGX+N[-RD$$*S@K$+&&VfrFQ([qrIErC'$b(Di90Z,K4EY6r[ -jP[2bJ9(j"&1169cX$be#H'9)K'id0+j%+&KK9b'45"bEM(rB#B,@Z)b%("dHE'p -,b,[q09U3!'"%H[LQ#6dEa#V8"eP)4Mb!`q&)*Gk4BFR!RMQcR'@%QicNX&G89HP -(c'(c3Yj9Yh1(cF22jkUUG(@F`fLUNcQ-LF4pUhN(!9cK!a)C,V)NFV8Eq!$L@(Z -G3V`3@9D4&K@A+DH+P-Rb#Pr4L4T&Cakq+J9%RHp859dXj+VRUP,6i+YjUH+j%UA -N4%A*UE+DKMZ*ZV5#`+`k9AC+19'Km)Uh6RE%#,j(1-(hZfS)[M'`VC@*i*IrFj! -!9iq)3!F-ELE$5NEJ88M%a-Nf2pL6b@)cZeP3,Z&kXdiHVA@k5e"d"AQ%)Pi3iDl -2D8`HhGr*A!q9@KACjqF(pE--[2Zq"ZL+"R45m%9IHE&5A!j5aALUl%5K6cRjR0R -X+fG8"cbM"0RB9h@Y##lEclbZMYc9kl4V0V8(iiM19R*,-KG#`N)qJV3m[%BM,3X -U)bfCiLBM,F%k63Yb`kfbIb6YC!`&UT99#RKX[1I32NSJJ34NBMp0cFja5!9SPT9 -"d)q,[iR%hfTJJKm`fRqp6[EVfHh%CTe!QfZCJPBD$FLFB69NpHr(!)m'`-J$*T0 -3D99[G&J2,d!"8I9)YqS4$jKm[cHR+UcBXbmkT!LFZP*XF6DZX+bZR596"'PcISH -$r`&G'h2SiI4HCBMBV8k!FQ'pQ`[V0kX4eX&iBHh+RPbefI)9#@Z$,UaI@a-[V)G -[F'(0E5bXAdY@*kaU)@A(plpFFE@a%Pk*[*k"`'kf0"EBifG[9Q!KLLBQVMR'#-# -Gjb!`qq0"$F&&8K2L'bH-$%#'EH3)U2RE%bbp%R&PKL[$QpL+,U!JIdKJ+pPBNpM -B@&k0`UlYT@BFV$#TYNDLP49ajTN,f+3)52NqE@+F1$EH1)4[J![KH19#Z"#Q3j! -!0P!N$r0`8cL[9#B2"U%#kX`a(PAXd&B$&B3!dB3eLY$3K2%k%k$-mAFC#9j!aZF -&Z6p)bqS55alSRF#8$ME&rJ1K6MUa)#haM0Q,"LMjdZkkl-N*j0!4*@q`LK@N#P4 -)8DN,GI4%k"1L',$E0BHcd'FbBVFV2B1j8+-0A2YqT'GT6Nm1XB*)bellGh,Z2@q -h4bjS9e#%)cb%5Sj20Y[Y5'+EXYH9DrVTY5eY2GqjeA1,VY16E5h$FQPD8Zl2-5p -i*NJ24Ek-"lC$K#kpJ@c&k@iJNQdF@IR0hQ3ZrB("0)QXDAq`&D%'UT!!!mN[8f6 -ph5N[J-L1#G1R+HQbS3'%H0`lC"*#(fM3K$j3DICr-3@C!!#$%&V6I$Kp-A2kBX& -S`IS+529B-%f985"J(#EfBVc#M+)D@c+*m"ZD(UM%DPU)eG+KDX5U)k@MMM4SMR* -1VYVUTS4[GGq8Sd)T,c"(l@3%'bq+DRIjdi5lMV6AlbkC5"4cQjESEDUL6d9X,J[ -+XF'iaD8ElEbQXkU*DUF9*Cbee-kGp8NecXT@1DY!L0(@eFRF3maiScKGYNTFSSK -*)TPb4L3c`eCj)KZaVB#+EI&Y0jTLDXcBf-B!YLH(kpiB64)EkeTFrmBZT$ckC@e -10f3pkDlEN!#P%38"K-9-S--,M%eSSYPD5!defqK+BJX4N!!PC$i`&Mb3!0-K2AN -M&hec)d1+2EjkAeV,!AZK'X!1kJ,%cEREX&@[f'UPJ8"bRTFl,h0Q4Ih1FabKTiK -SDFY'G@fAp[!*CQ$YmEbPA!ZV31-BFTH-E3%!eqL'jI(CBV[MlibN@@a9IFaF5BJ -hH-IC**UdJFcBLf+a8aA)UJeq0rJ8N!$-*'BSCFB@lZla0(EC5f'jP-p4&DBi`aI -89D#T)mA'bQK$2T-bj%Pck-JLENkP`FQNQ`ar-"3SC!SBcd!fp`KYM+NS(1%JC!S -+[,!H5qDkE!NMUQ%"185)0*MNBNajM$@j@dLKm[%IX8ac`)M3!3`4d`,*Nl(9Jb5 -DZa&Jk'$Q3qUFacY(0&5ULaVpCBk[FdSL5iaf(ZCI`&3IKS`"EHVR'9c*J@hM$X@ -CB9-lU$l6qIMJcCR1*@hPlNU+mSX`iF*m@YA+#KP$S8P'i"d#)M26M+pe#F1K0hU -8N4q2ULr@*1-QCBl[JV%d3'D'J'3-DABm)kIQAP6e3Q'SR!'Z,#*4m'#5-qi'F!- --Y%cNM!TlX"l!SMMQq&LQ9YN,CSp-pY`-'V*R0X5aq`"hbGj%mbpb!a8DU)ZDc-+ -%HT3,eeS)Z42QIj2LAj!!0TK,rkr0lFcY*8C3+bSaFKH5em+8LELb312T9,3AVC! -!4*kSUc*epC!!19fJDZV6`82e#)j&6e,bTiHTqIZQLl0`p-Q3!(!e((+`XZ0SFqk -+$")A%RK[P"RAQ(,#FBkkmPZS6,!U("&4!5iLJGkk3hP2pGMV[@P0V&L20i3Y)*I -YmbqbBETLBN8LS!p"I++jB,--GifGVB&"G5c[j')BLiIBeZfL3%bES!UE,jj6L2J -l`N*44`8+Ndc+i9rQ0N[Pi)iY%5Le%0'AIMHrB0Pa'iP5KN6@dHkZJ%JK'HRca!E -SXM#JkBH06l!`M8JbHk)03(Ird3fS-FSq0&UfmkhRL3bD(SS6e5)*EKZ&0Y23@(q -4#bTTjSPUJ(C&aIS9c[Vh9-lkmk@kHYTiNp86ba)`dK5&2JR59+&#!K2ISdbC4e9 -"85()X2PfU8PpeIDDq2EZV'Cl*Pe*")fZ!Z8)iMRI02CKSeQGUF25`iRJJXGPe#p -6hr6YUTcXRGSlZHUhYk'k@XH8FNcim5Y15c9%!C[+L)+Tp[SV0QbmQbIJ@M8*D&' -""eA1AD-kQH"ZX!-a"8*P6SE)d0T00,$NmU'rdSUhR5BGdLCMk4HN*(ZZ696)dfe -eNC)*FXDZ#M4Id)M#Zjb9N6Em'"14hUbSpFH6NRGGjdRAhH2Nl[Pj0HkaJV'N)bP -,K0LKJNRA!`AL3&3GhSFf*6E!a$XLMT2(+RA4ERS`QF[BVT0GmIV2D8-m1(pqAHl -jK8dlcZ[IlE*GNK`"0VeKX19#h)3VUJP3$pL`Ui9Rip*A1)DdC)!X4c-PQ8!3D8i -'-mrV#%A$#29U8p$)M"'NkVVF'PhR3E0r,%(%&+8[Y[DXmqbqB0b,`3T9+#9,0iI -02`eATeiDiJBaU&`UZ8ajJ+BGE@`5qr9'#UGFDNTIR%M)i3pji)!4!d,jVZC8%89 -9Lk%ST*K2('"KNqYB`(J1h-X)N!$mj&40ii"*qZb[f$eHc6eHDaFYQ@+[ep&p#Ir -%(dUXeDijl3@9dlB`Tih!$BVQY"'KXRRKY1DdMq+FKZNEAb@RLD-B8&*93*RG1!J -1Y9l[aLhD!E2`mhc)Hfj'1m!EG`"0$h+JT#D!FRbe!-Vf!bQ!8S0`9CQ[%9J%pN` -!8ch)craaTP$+59Vh2NUBI4d,ZK6#V3+aQJS6#Y&MZbp`e221UjLbPj[kG5H(p"$ -LNaQkNeNJ"fUU$fGV6VBd$L0ZR8Y1jP9!3#GKGCFH++kJ"&1d[e(DUHX-Nlj@6cS -,PZD$B!KNBb0K53fX$l!'88iXLk(bV,YMD"kjJaQ&@!CK`eD)QiXqi4")`cF+IXI -FXPEP&SqZb,$eZZB@-J5ZK!,fLjTEVMG@CYKm"lQ&!Q)lX#9Dk+i"c+Z%kN[#'i3 -m3fI-dCh"!MP5lQ+K(#RR+YerKT54BdKYXbU%$Fj9*I!f2B'Ec5b"hBCE2)RhK,` -rRUdPFDaa%MIYSL3+eq[ZlIQ`NA[[&S@C90He)eG`e6l[TKR0TI3*Qd%F'0%1I#( -Z3*THU(BT#pCUiJE&C5&I,!iYR2UcmK0P[M0`+RZ!3qT2jNQ!D81#%89lQ!*Mid$ -qGEdBlYJB(mMrqR)Hb"pYA!4hC$$AL)pY"06U,r&PVQi9Q*3"H"!D,Nj`q+SK1,) -eBRTE`UbP%F#epC1p#[YN5'Vf-CKV984118L4@K)Q6TCF89r!TeakG)4iRKfITRS -!`TaI5Z&NmCMK3`[I1"#&e)Q+Vf6TQqJkVqSk+kiK%&Lbp"d+Y+XkPr$1(Jc3i-! -3X#4FdF*GmBS@5#b0dU)R3FE*mXP9$hA8(rajU%-,k*A@554rbX'bY"U`T-D4l$' -@34+CIHra!4bfKJIb40$99$RC6Y1iU5@rcLdYje[kIM9EfU)p6qT4IP+0`q))$b" -j$4B9ZSGPdkQS$+1,P#RY[-ZZGA@JDeM9jGHk6U1V4p9PdVUXb%S1-$#+,NAVHJ0 -GMkQk4V@Z&HKD,X$+ZY+d,M615Aq"LA!8(lXEj#DkAVD)b!(Hk1+95Tb,Mk&Sj$- -pNb#YkEJAY5&Yki!fT1erU!f4c(5,0S3ldS2D%'j,Ii+&4FJifDS4jbf9QJ`fF10 -9Ua``fe'0pfTKp4L&e30N+#Ji+D14PMYlZN),dEK*34Y4Pc`TEmJP-P8q)JHL2I+ -+eB$2K!dLc1!q4"qi`UIXf*-bfX%#5Bq4!PUdQAAfD*h$V(-@kc4CSrb*,P3S`iP -0R%kM$UE!YKCG(DVY*ESfSHYdSXZ5k"T$PcA49@lU[+9e2Sr10e5GLUSc$CdV9*f -M@QF9ZQj2G(@4Lr3$'l2d8CfP2f*A+9QUe1Z)b)KRkEqj6#aG!%KRjK9rAR+bq!# -aFkk0N@L#@ecqNp2AIe*Fj6[3hQldPGf%@PHq&JcdbMC'-*Vfl*1pKR`#2e@bD&M -3+JIM63LSARSr9$0UEX4NJ1mYM$j!(hXF32"SN!!Cp+,Q,TMdHl0-E0KMpLY$$qD -LmZjpm&NkH(YZBLSfF)HBCY`#3p!!M+DpkZ#'IV`j`#Z-&A*3rh#9LJApL,1J2kk -'"Fe[h$cTCUXS9'fQHiACif9Hea3QD[HRP8IrmV0$Nb*F!V@j@X@q2`H"Tf'9X4F -"JmkmM@QL#q4"lk'V6+QJXM"2*drZ3j8RGl[+J!j@[P%hh1"22hd#N!#CpE(jAqB -k*&HMp@X&(aZT2TK$Mh&$I*C)[UXH`a0p!'a["!A%"#BCJ(+9[if-1G(pYj!!q%$ -E!-KM0M$20$*Y2#-$RCp*dhfiTT`3SEV*p3'*$Y11E1T1r8cfec3&2`-KL!PYcfM -2pLRI`UHbFX0Tl*&rBNq)3hBP3Z2dB-P123J)NE+AT"5TZGc*peIMj#bD1,PUVMe -PeDk(rr61qJ@&+i!-iX,eqXQ%ZGFempSGp9A+M-dJp$1p9c0ACNjcdredZbSF"%* -pqSR')PrCJ#AT89E**+ifX@T'2$qU#J*9hTKXJNbXP)(J9iJ`Df,CMAb1mQMZ,p* -#Vi@kBMXK4,CeHKErI#F02N9$(M'Na"(4[*ChIFLke[+Z'm`S%c-kH3-T3LjMi@K -0l&P!C)"hjYEae,"j4&2e42,eEHVZi4dE99[YM0[UDY8"eVJ$aLVCkZheE2@M1Tk -+hfU6ZQ%PUAdN"9M@8K1Ak5VY!DK`6,[BCiUSi`[@-5!U,pBa`3G[mZe+1BqMAP! -Xhd'ME2Um#XrHjI0,Y(L0AmlA,[HM-DG!k&H(UjdF-'pPkT[L`kIVbAM3F`m4X66 -N'eLJfYiFGXeN2XF4VkABHJ!+['j9mp$eZQ1FEaQ*$##ehi4VCP5Z@DpbcAT9-Z1 -h($25*e,bY55aTP$ZPbJS0cf3!(+kH92`VH4"eq9$6QP2ASlE'#p@di[hNbV0HM' -FSS$(qN5$,4(#M'Xmej!!D,!PQQ)P`S,6-c"mS9)iC+%+J"Zj-UHCkTNRQb'SS*2 -5X5+Bb`'dMQK[2e'%aY*Pm@ejcU$"fhcGkHk5Z8IeTSG6ZjP5(MDU("6ER@T*Z)B -##f*l8kd-"(-%D+C)X@dB"P`#eA`qj4bE-PqiHLUCF2Y8Pa!3Bj!!)f*kJl+T@Si -+T*MHEpk%4XEd@E40h-!lb*Si(P5"+ae!,TPl,'&#QYV0Lh-kb+jQLcSJRcR965a -H6aV21[6(9k@06F28N!#@0HYM3JlMUBP3('!Z+%9R%@!G*J(5UD$U`TXmdD6dCH* -))CK(30Sb`Gcr6SS,-A0Rr"&U8c1UbE@mZ[a'0G9P,UmZVI98PpDEULiemR9e%TF -@8q-TN!"9akT45QR@*i&X1CCS5,Ak4YhUJiQ'9-bmk&f0jLh84!R0NCVejj`A33# -GSmC*LPe&6KfMiFDd3ap,aD9UQX60[Lf*"PT3%f`1TREV#cYIq2NL`"FQ[ZMRLaK -I$&[b!RP-J@k%+E2Jmdk4iarN@2hH0(b6j`9-Lb$J6`eYF-'6'T!!'LUD!Y@6!M@ -8!Q92J6UH!Y@9!R9B4eR)J#m0qdBZ9X95ESiTf`aJf",-,Sa#mD'&ZT5rkml[61h -1I`UI`&3K*C!!%NLl#QN(dJkNAiAd!qN(-U"#"S!-!'P5)8e!QS$X9b(lJH`(-UC -#aS#-!FPG,bG+T1'B!-+"Fj9YfU1$D)%!8I5eTZ-I[#e!&,e"EKL'%q#+VJLjSU9 -YRcc@eK+3!2IP$61%*h@[j01LT"b$6pTd4D,ke#48&Hp,DfimY8FC1Rec8iH8S@- -h0p@Z$,PZEZTaCHMSc8hY8SBbkTSkp'%D6FFdL&,e%b&FErYNHQT@1#&DM9ak0Z& -56elc%-4Y+a$(U,&r'"0Zi*-j!&%)bPl8p#H)TMpY[1(M&G'8"%dD#eA0)Dr3CcA -S1+A,FaE(*,q9fJ%0BRSdh!,3jiaGp-e5ZU$-1T&JPFYl"+YFrY9U@1@+H$EhKhF -R9rh9l,VCR*J8cqEqX16PXlNrc+ZIc6dBaqBHV*60,Cc3f4`em@pLL[KrSU`ZKeK -GUrf$LeErf2qZV1iLBh8jeE#kR(qh@4dDD196!X-#j#e2@I(YG$YIqU@I,`-b`*I -8c%%XqeRM$PV'C)`[KqA`qrG$+28M2Lq8@Dd*alDL3HR#I!F+X9"'QMT0#%pU"MC -&43[ZhY4k'*m3S-j3@$+e3MCSPK"lIUPe+0cPICZ4H)1Yq+J`'NA"f,@qMkZVABH -)kib"QZqarfc$2j[a'*TS#`@N+AH6j-X3@NQ$,@#6b8rHpM13!0262Lp[ES@R[lj -40&Q0B`mQcKiHVSBpM+98ahPbbH5U3@Fbpfr&TekU$Gl3*-%BRMaE9dKrq6QqNDI -9'h(Z@Iiibc4KQm[42(hUk)m4q&[qZ-XQYQG)KD$mpG@[ARhpr-6NXFRJj01M5dE -A"VH2fNDc4[rLI-ISaG(VSpH#Nk-r'jeep9q#raVmkUK0mRm!!#[V384$8J-!FQB -393XYT`$4E*1hhD9HbdU@@MYlQ!VAZLaV,@e6N!!d"29ZHIr,3YTe@l3k((GTZlX -8q[ifEB(U-10##eC!T8!)*X3BNk1)bQ#%8Yp[0X!ia*!!4*!!+1B`#DNJP3$M)F6 -T-3clqhrI[AI[YY[h%mqFmccRH5mEE6G*5j!!!%%3!%'J'[pZd!*')hid8ad&8Nb -D'P*4(dc&(UP34RTjL!c1IiCPr!C6SYb+J'!ml+R`LAP0BQaYH4c"`CX-`hGSiH' -LcM0LhZ!%6a-US-Lr`ESGh6S1Rr@928EMX'2`)k2aD`Eq81QP)DkT"-V5LrqFPc[ -NQMlFS88'2p+de(BmfZA(-(rX"pS%$&5eM88JZjLBh#(4SiCS[ZGfTl5ihBqe,fK -S5HR0E'a`&jaX#1kkbYc,XZ%,`d@NbMQi&bh4fD%YZ)@kQ&$aQN-0CGdLD1h2RVF -A)Qbl8KXa*5&iEF@M1([)@"PSeA5fD5!H%2AF)Gpl)"K'"l,+hJD43kUYJQ-Gl8( -$j8r3JSqR$e-!H66Gj+c`$M&PPpQ82AGF%ee&e*A!AYlZ`8Eq*,iSE"V'Kii2"cl -Xq'M$4`3Ih3Phh%hU6XZXcBbLVKIkUX&09R8X8"CkBUk[PbT+[1$EPcI6Ir#929V -1F"GEq$c1BV95%V21T@YK,D`-,`c0C#aQ+'(qb1dqf5$[fZm1"IeE'kr8YJ46[#e -eb[XI2HYfTcHQRN`2ZM1c61iIUH-AY,[c-QYpH&rG32HZd0B(5MCMbr39j))mXd[ -qc6m5b#UT$EbMDCXf"V)HE-IYHDUU4m*HG"FaGV6q(5UMj0m)iA$Neqb)36jb&VH -rLRVNerc)`YedC''AI'3qEX9S4aEZ9SjmQae*B8F'q,)@eY'4lbl2Gq6EbT(Vf*( -hj50BeX+j8BpFaiq828Y(bUcb%5bVl&+d)fA2XQkYfH[D3kqZDrHBr9VKj"hMeed -#U(BE2Qk(5k##XBaBap#TL-6F&@B&1iNKGGA4mH[-+#EVm,%#b%3(0K2Mf)%,G1# -@mp)$amB[FU!4Q)D2+MJ11M#,f-B11)SIX)aIpcj!Tr0a(BhP4RDJ96i3LhV!h*1 -elY,G!@d5[eRNS"X4$jBUV4r#+Yre'UI$"IFCTi2@eN4YGQ!k!E'9r@EPq2[mq+) -3KVZX1KU-$@cV!e4GE'[QX0S%jkdAMF1"R4dk'Zrel)"!PF81(+%$rq-cj`-P9Kb -`MZLcGaRRX3-*ULTf)#RDJ88e11$SdfFI0FjP"h6j`294$ib$qL&&'Gb8@$NV5U` -++mD!&D-C+dE,V&J"9S`K9V$M0A3%(6HYF$G!!r',(Qp2*KahUIcb9m9I,K5M[+b -,mR*ZmCGPPf`[S8k!ZJR8CR'Ffje+$R'"Nd1FG!aZFTIU&$fEN!!iS'R6mi$5)1" -U!PRVc-`*PJ@!!ZVMZ[Ij)c9EZ+90YfNkYY8(5j@AC[Bb,(fjb&(mjEVhT5maD"a -9aF"+X-DU2LkUiBq+Q&$al4D0+bkka"TP#6A5Pm3JhQ3f)Z5K0&l8B)*T#X05kQ- -B'NIl"`EdhZ,34%%,UBI02f`)YK4FmFX1q,XiR*RUpQHQ"qRp0G846dVGGV,1h9* -h-V1P!DrGZlcAdU-,ldbVm05S`P0*H#SA6X%aZ#i)$'c6ZTdDB!Q``6B,C'B9A!Q -UHdhk%GqVSD8ZH$+VH8h8TZS5EfLi8Ka`-RqhiChDe14)94Q[#(U[B9[MYDb6YHm -N9aS*3`U'NBZl8TX5V21R0ejl&1+'LiCMK%j+3E31PPl5#,af`%8BMEP$rU4,f0! -ePGLI!#*RVd)A59Gr,,il`F!@mriVMh)*0S9-"5G6prT2CUBR4pbeI1,HEEbDI1j -F1p5)9cf@0iGiD8'BkN8V$$DP(9hU&9BFAH,BS!5T$rl`9D2,VU**#'L#VTXZ-Hf -)NQC&dS!Qe3[,C"9,RAdfB(Ul&LPGJfk%!$Ukp-dJSp16MSibMRD&Mil5l2'l'MY -kYQYYiJNa9LGZ2Kd-2plRQSU1Y++H'l[QjCRpprGBEJ)irr#5lq%S'L4likj)0i5 -f2E&'Lk4dd@-)!q)"Hm9EfX'lA!-J,-2$B+A#a0l"dJl01f3bIQEf1I)J)04%BQS -r%f0S#RZjdUd0TLXYYFR4f,Z9[#KA1L*9fJ'PpHK+@dRT%aLNLq(UP(jimF-JD$j -@P4CS1&4fT%`&SD&$C8+!Zeaf@G%43TEF)8)AAeIm4'M+3"06Yi+TDa$$+YPRIVH -e`4G-TVUTFR-%08e'*1QY!M&%BY%B"[HD'KZ5)jGrm4drRFr-hm6f0TU#Y9Q0+F( -UYYj,@cIkrFRC1MhIEYmKB5QCGFdZ)MU#LrU'F[ShU[bfmKScGH0'3IBH&(!(#-J -fFRHQAM&fAlP9@dS)[TJ3R"%G$-PlE8KZTmGXKZ6p&I[[FR@p%TDLphlY`"#DP#1 -m58NqNMF$K'bpeJb5ekqiP4323ffG%b932(aIH9alf(#6JZ5biMYP4(F3SN0Yr9) -q0,p%D#ihSB6Xf9-Z5C(pdi`JHjT!Vi`MHr9b(fKNVhlVj#(l2B'epRi2&Z,VSHE -(@jjE6NQV2H@%#0j6ZDGiN!$,-[i[qpP2$hd03NHR'hRiBchPV2(bdU[5@j%NZjp -HN!"Lr!XdHe-j5Db04YKQ%S#!5[lLlGD(XXT1'HrC2E[X&,eQa-EQH!"CLZ,`"38 -aZJG,"c3'eV-K10ClbeDYPi3$ZAU3!2,"JH9Y#YAM"#TRF[BejrJbl&SbaV`D&rX -*f*KA%cKNc*[$Q$G(CFfHRqCM(LY8cXal0X2-DkBJC4K9mc&[(fHHP(AjN!"ZPX+ -i-0e%Bjb0EAqrU0Ei3+&D#`AUV)3@52bbM$,H%bUhkTefHX`Z4`"f#S@Ha,bi(FP -H9UhG(jUp6CZ%&![kqDZ2Z[KRFE)D"'rHL&hFaBB9X46CHebDpTQikk&Y@V[a(de -)cqVU-rlM@I0Z*E$bjZ)$3aJb6Gc+KQa5KQaL3f,bN!#VBTlS4DLN[8prb'[mh81 -eaYmC5j!!T&*#UF%Hc6mJ(X8AVjTbf2&AcjS4Q+Q`RaEcCRX4$2-biBrMf12'G3L -UV-#,"FC&!2D3!(c!MLaDENEiAJRAS(,+H*JBA5'IDMPL0P40S&19IYj'H[NJ'29 -E-'8MT6hBUKE0ecG-4R5LIJ-JYiHTreYATjK0#qr3a4eBiJ[+%Pr!%RFBbl(%E,D -BK9M+3NT53j+bE4Qh+F&UE)G!bVa%pN2ESFKVLT!!emkDEl&Sl3KP*r`(f9HVf"H -VcTT&$fd+!,,&IKTI,6#ZC!2HB#U[C-2HB#SMf3r9h%UJTQAma$AS*"hGJd,air[ -j)`ACFmZTBpNbIZ1mJ*FUC(*j##3&NUSTa*',4jDi6EIh@rN`rJ*$hmTP38im&P! -)p2IE+%523@0*&&6E!+6[RTf(EQ+UU#UPSPl()Pq[1f)iMG5@MrdG@%69ZpZdIZ0 -Q"-Ff&l,J'$TkZX5Gk&iLj*XL)pm*06aPl[@RAfRB9Pd*USIX6C[l80bZ`HBqDJb -2dRdmS-kfmB&bYTZ)AF3F)XJ$fr-4ijYXa,K0h88I30dT60dTUM,[GFF$k+BCX5P -)(9K3V)d*qVP6ap@)e+(QmUhHY`f"8lA)l0MP42kR2F)9PIM(P"U@mRNeTc@(LTk -[lbe0!EEYUGf"9R5p5F$V%4$'RjV459Ai9SlRL,q`9I1%r9e3J(9DEDrd%(&HH&A -ca0!T4SRA5"S2Yl*PIdFDeNVlUUpUF[Gq[jT#h)Fd2,CBZbP#K9q,M143mIF$2)b -E1pr3`R$"YdVB'L'b0lGB-19U-kTDS@SC8r9U$Y3TNN@E6(E$4ELe(JqQJIQk2CI -6)a`*GMJmf-4['lUVmfA@aDf`*fZ$adbJ[84B)PpAAC[5A4G""k-3"rKqjUJ'm0h -"RB!l(k#GGLjQ!-cQL43UUjfC')r#a)iBUiSL)MCmGNp6VD35FYV10m0L*"mC[f) -X2TrM5I**+fqp#E@-D4CYrL3Q1-'B[Fr6P(l3LGR53kZS-G$DmK!iS)r$CPr#&@r -9A#1Y1IKLS%jRMG%q'k&@#Y'ZUDf&,PZ&&'#,`VHdiE"i")R#V!Xj2"rKNqUVX,q -j+P32TKGBKIJ81T!!1b5lp-ama%[DUc0jT-XkY@*C!jZ%iUN9hJE'G[UHaUXfIlC --E,E$5H[i+'56DTE*PGBf@)V'G4QPBJ%XQ!"@f"9"jDb"lNI$d)B21lX9m"KK(G) -#YV%!c+K$Kcj5KE8A)fdJCa-(`i(,JApKD-%kmaSrm`!GXXKa@-8l0'[H'jS9B5# -lZ&G,K0l3%[E,U1)M,JHkiPQAelBLla"()MmG#P1S+f6fljb0EBcc2L+NDbId+ed -QkQMqjiNRUJX[BCLGKP(SJ46++3Y0JCJfiaL)D3YU4LmE-JS*&XSJ%281kRj!Nri -(!"fR(UV9IQ"FJd-*0S9U6F!F-!"mZTHTTh6M5a6X*8!%%e5XHDZBNK&kJFkA"%+ -CLDj0aJFCB2-J5(dFaXHpUX)3ZTk"C1ZCdNPXi*U3!2N,C6%!V@K"9D5'0YDjq1* -`T9+!epN+F"bT%TJ8ZR8hEDBdCd)PGr3X$D16-A4Zb8UCS8XB3qH+@jYPk"+CSGY -#6BbGYd0)@h#@`XcEq3#!RUXj3hhahAhD$k6,`*)h-(8hX+8N-4"d0C4FcCSA1cr -)*JZ'+4&$,P`rc"q16h[TbT36)#+m`D&N)e5XH)'a2*H+M0r+8,U(`S[XG5H3!*) -"pli$FX1"VedG5U%+&p#`lVb90%d*)FNNqX,HT!K!mJL&TK`m5,1R@-Jj3kZA0TD -XH"HJH1[q!fP[eRfX8'[cT1j-,Z"Kq9'A(afdKDp2&QP9R6Yek$"K8dKK)#ZQL9' -`9VcJDL8(b9`4X@BlBkLpm`b[qKq1L51-j`Si)l!e5[2MUF#8S6-)Tl'$@m[L'Nm --8N9elL44FN9a4LXJpCANB3J(U6q0iNkh-BEA-SC[!f+[P9QHb-pbS2E2'@Vr('c -RL,d@L,f@-lp`ApUC6ia%mG+00ECJ)Ga*$E%EVQ`ZBqe"*)c9N!#6f+fT,+D*Uf$ -bYQ*1SNTKmkFf0L-YVFSiaS0dXND4*XmVSQKbKm*i%XGB(j%-8+U!EmA8[Cfc+ZF -pN!#ZIc6q%d-F,@G%DC6$0*8lVT[XQm[pqVRYb!EY[aS108NCX(3*"Xh$Lf('KPT -f`aM"LY3Q##@&@ebZU!e,3Y+`6&8E&XDU)MlBI`"N&jD$D52NY-,'d@Ld`Jm[`54 -rT(iKP5&mEKFH6h#Ri)%SAlV*AQ)16R#PJ%&M'Mm%XmBJ,Dm6+%K*K3U$Z&XJ&[R -fX!dUP!dUF4YHZU4$lq0E9'+,ShMF`94+8#-"aUd)*V&Y9P+LU1cQpK6VC-XJ'V1 -3!+VH%d$P1fC@JD%hFX(&1J)c,&KeRlaiP'k"%c"R!0`1imJJ!rS'R!!qqZ)5!ii -p-Y&aPSJ1Aq(hISR#8Le!,4kA(@a[DRTM3c#j"AqP5KaDaYrAeZ0"!R3ebAB-EEX -T%-'5r"J3N!$'0,q9YU+(E@C`BTfUkNk@I+L%1khX`DS*,!@#!+e1QJ,0Nc9NNR5 -X3T+188P5*XK'PSl*4jEqc,Bj$FA%mQLNkA,RB40"R[*N'S9%h4U0B%p$#JErjPR -hVQ-RGQM**XEIKqT2-Q,m5C8BIqA8)5A'(dXM-Cl""*!!BX6i*%QchF25B#@&CJq -P6L6aMTm$Kj`NVbr0*"NNq@dC)XQ,+Ga,#SGY#MG$Q(ZPK,PRm*!!%ZEH$"2QKk6 -lkj!!%ZEammd`qMeLp28f4KFMckZLN!$RALPjVV"FHQKG-I+mhp81mVcAL6c[L0k -0qS#6kYj(4DSIkNj'Ce*GTb3MPaBMm$,N1m#)p3pNB'p5"SKe9G5q+15k9bEA[GM -S-B"P*3Uj[UbANHXdPIQ3!"$V5@`CKIeNR!%SaK(0Ab!Kf`G9XPf+"*J#N5BLh[N -3NCKFl8*VYM04hf%MkSXISX49cF%A*b(d*lq,`QHXiS3q5fkYSUNFb56cec,bIDe --jQq-3ZCcGS9T+bR$R!RqR(kZC-l10*2mQPBZERe&3[6[kT!!0LL-i#k3!*!!rS- -Uk9qX8Y)3#+LZ8V4CfG,3J'DXY38(LKm#5A@IY'*m)jJkj*!!U[!Z"3bS@MC)e1$ -NeAeJeAdqcXjZU4Lr,Z+PTP%`T6p$3B6k%[US3HG'([EEJJKm#5e8Q2hpV+Ke8,U -+93ZT45-AK5E-J`Nmh3h!iJMlkMdjR-#(pKfQJ))YfB@&&IS[fel*bT%CKb1USBF -dK"MU5Aa%B%Xa&-'FdRC'mUCN&&Ma+3j*@j("8%1[003JEDl3k+K#Ta%c+"QINQB -S(4m[+mM9Fj+%$DYM&@!,1l4IDLlXF'peBBI!Q%[j`Jj(hlV%dj!!P,3FfHR&9-- -9pB3IkZ[3-d4V)JTRXHUibUV$K1,bS&`K(INV"%@PKK@9'VP5H%&j%!AP3E9U#MX -c&)M`XN$%4VPa+K,*E!5&)HjRV+B`a%DR-%3l'A@*'SCBSl$Gi"5'@-2#%'[bK5( -@U"9"iU+()BkqaEGL5Sp9LiIL0JpJZZ&Bi`BP(1&4`a&aIF-FqMGUcJhP08fB)M) -2SBNQ&TSiJG"%S90S!UPV#%r340ceH0QRK#I@5m-6-#5cJ6'LeCAbk-)6-$$64&Y -+3K5'CN)89eR`B)UVPS8SYV%3a5MA#@Q))M"'#Pkc3)A!YUU3!'c&Ja@'HS)9Sj4 -JaC[%kJ`%+qT0hFiIV*!!QiMRDmaT$&c8ZdQ8`-A&$"-PD[M#UiB[&)"B$9pi(l$ -`4Af13a+qf2Jr*AbaF9`pi3Z[(,i)1B8[1"%r9L(LakK%r!-8[RJXlH',HY-0*1% -,KP#LNUDZ")',&IS1&2U95U&(-8+!A#hd4@UKMf[@'!A)P)BNiD&*Tpf+LJQekb& -%S)+dU9&3"PN2+6r+Z$i&$iJ+G+5(+A!`UJ*bQ$j0bkmqPP5JTZMZkiAa(YhcDYQ -RrU,3Uf92hC&9pP6CTr(CCCq+1kcH"",Y0k-3T25)XG8dSASd6mTp-b"kPb*P0aj -)j)P&+,bDYX8fK6I"Tr$D,H0[L#GB)E+-Aef4+"Gha,hjYaV"9YBN-@NcL-SJTNb -ZlKD63QD3!+TmfZpYE*TN@0QFZINrZIMQeN$mK$92G'#VH0jVD'4'Y,!r,*j`&CC -ZXHUq,MjC8%&`60Nk-!6@Kq1R9&A%(F2fr-SS%jjj!'LAfhd&cX4r-MABSNl+6@e -jaa3N"(#lk8Aq3*A#lhB8N@f0m%4eQ"eEM0@,*3aB$&B[cL#V&aGMY3-K'iC-KdG -Jf)1cf@NEX(Rark*XrQCa0J0I3HfRAQd"VL*T0'2FcXrZ,4*'E!'lYa`kGQII+l2 -ED4Z`Hm[rMZbqPMafVb"f8cSTc(mj6)j2cDQm@h-&QC`*I-!-Mb)*%dBS*q,$(NM -AV--MFY2M'#b0`+`FA'+-c+2!6HjA`Q"*q0"G[8cBQqGcB%CeM!86"*!!$PN03He -b)+M$c2I1h$*b)i+k&aYGQ&J`*T'Z*5*h"5S#Lk1kD+[%4GY9&ff[S)3*K'L+1,P -*JBF1M5B'-5Fm063Re&4b-HZ[,("RPaQmreTGCNZ`24Ppdpa-baV9T0TE@LZ-#5+ -8'0CbJ)EVMc(eMAm-PIIT*JFkE$Q6TbIf2TU'"a"!Q$Uh&A'E3e2%@+L*f$La3LH -$YQZ'VmI2(r%aDYJ4-19UJEfS[M[NkX08i@iY3SN@BDAkiULfU8VeYENLP"5J9-Z -SQ9XkER3P283!pKqjDM"20iNeGhh@Q+I*4k)6H49d`0iId#K0K"*2RCUr)Nq&Iai -,$Ih4P[j*cH##j$D$DkT"i$%-K3kS+24Sf0`4CUM$"BmEU&$3Ca@a@#NJM-QNHX# -d6@-[R3Z+[9K"L8J+5K)&Ied#CbjBD[IeaC1`I"+4b'[L,1fYMU90Y6D@FN6q,V% -d1AKF`*e#TFV8Uc!JkiJa*$CJ'C@jj5-k26$JQFaM*e'(8cjPf`JF24LM)#N"Ve# -f5i*@kDlY5!UT3m98LXGKI'PdbY08330r&fJ+,-P!%@mLCV)L(P1,11pSC8NRA3X -K1[JLPRq%)HS*-NfX&[-VY3hE-[dYbHdQ,HibeF$-U'*1XbY06R12""Q+A2X9F@q -H,j6GCQ%'h'E"!q!f1HMY8&$rmIi-Z-hUSI$-Dmfkc4V&EBl09YfQ'Y3S2%518kf -iReEM1XGQ`(9D8APfT4)(A!GjZ02CHEj,"AbXl$clQ22XCmkcSalRb5Y!KrZm`5R -dd,ccV)F!LZ)m9CC8-P6km"#k6eAdfl)$I9(L3-GQf)%HG!)d(%bm`&R-A'JrFk% -GpEK3PE&0Y5TMdq*#Qm(TrbHid2T#0BYKE1F&[dP0B$K4C"PIYJiX@FbBN9@fMJG -N#04Q3Bd0NP5)V,)ADAV+fld)cLcQ*RQ+*6jdX@0EE-HBdCiAD"YQ(LSer@3$,GM -Y"#5VRIm)'i*XX%FR'liSJ5QJ)RAT(`J`dPM*TrHYAQibKXbHL2pq-Sa0i8GkL3N -fr1""PX5K'"[jfUTLLqlKNrZrPA9bEp"Gr3Tjf-*1&`TK4R[K10X5@dZQT(5mdU8 -'Q)EQLTl5*6hkKZIThkMRjjIAR2jEFd6,2V9SfB'Ki!eXkJd2"ee+DF5m2RGq#RN -V635Qrl`cpdIpr"YQ"5AVC-0H@d!4#qK#d'hU`PY6NC!!(X'bT!XCd!M*$"8HMB, -`@-![JaZ)S&%#I[ZaI82UbGVSDkKQFlkdj#c"9h`*2e5A80[BN[%e%,T-9m+1C,6 -2[ZLA+AfAZY61N4`Y'1k2ZDM$&@&QbrMEkpiekCTa1RAC6$+caFaRi8pH'6eB6%[ -M&C-*j&Q8'P(9cXL@Sp+b*H,@c@m*Ba9NZS-K(%+HE8mX5bQb4`,QGX-6bi,hL#H -Xh#c&h4"h,6-P@"X9Re,Trc9R!f`U#JmX@TE5M36TYPF15NaL6))E0#aDjKd+EQ3 -Sb`ejR--fY5IVkQc"pQ*SQqT0P6ID6CH*F0JBP#)cCd9GIlqZ8A)'*3l"05DCG!! -A,Fd-MUQ$UGXmSM8c0%Nkp#!F1AAB8226&3kF$[b'%SL`B3if$0Z2d"GpQZ%LAK9 -5DVXpV!ih2)1AP',bmfBf%f89$M3cc#j4Y*r5PTXC,-L$`bDAbfAISlhTHMU0"`4 -A[f6SJ203GSN-XlS3#$EcT#f0QkRLIXrr6T5U99'RK`AiEiMhP0q0JNr"bDUal-D -KkAF"RG#0qMUk#"e`[SYTHRAR)`MA('1Sdbi0I5Zb8mRN36A&[1"`ZQUU46(c1)Q -f5j5Mqm2KSc3P(PTb)8K6j%[L!92&V*56%8EZfTe0--VlfjbkY&"E"lUS1CH6ZmQ -%CX`brJpe5%$V4hG46TXj4-9jATSF5#U9$5U"'GPX6IfE4A-Ga6EE4jeEED9N&-1 -Tda'[4EcZlY#YXIZQR0FqUdLaRmq*(kQCJf88ZRE5Dc,$Li(fkSfRX-j*$&P+8cX -MV$1QHqPLh#4kbZe*3#d1XLc!JKZ[b2c2(cEEZLZ8bCe(L(lK38*16X5QJLR(d15 -M"EDS#PMe$92ShkJTmmTV+MTL5$q$bBXqEA06LZ0m6XIemH[p1PHSaUE3N@S9)Q@ -@+-U%lq-+'53+FF#rR4VZfZEeS9S)-EIVK9kU+fGT*Eaj2,`+#(fVV41,42p*@NV -b#piP&`QT'!!kDdHP58bUXaM@k8RQ45CZRT!!RN40M#ZXLTLC"IdbEH(-62b2iJ) -Fc!8F`0DmN!"ET6Zh,h!I$GB'k`"*9D0)F@&V+p)Xc%NG6"G3M+JQ0V(ZaM#QR)r -'KE&k!8b'RBbMiQ*'F6-5GX1i&)6%e+JmNEa+QFlZ8FfCQUmjZDj$EeV8@meh5K' -JcR5NP#V!krfjbU6T6'E3bd('kTT"Cqi`(L22lT-apYR[bV1@XEMU3bjUh2TN1Lf -XTE&10F4d@$&R0jdcR5@p-R6mUPEYpS8"chd-84N!RYX(eU,6GV8Ki&A-N!!aSiE -h4j3*fD*LA%Yd`Yhm,*&4KmcM%)&RjHDDl6$j1d,G!XT8Ha!1MhJdrC'G@YKD%3q -$3!2aMXVA%c0c6q8eq5YPXc8rP0UUAG$VGPm0TT+QTXB8pq&dG5%,E#c!@eT(D1Y -Ke@J0L+,*JAH)N!"36%'qcBN6Qp&5%&c,L*cb*c&5D"PHr&Ujq69ZIUAFr!Sh2e& -ZIS+Efj5Efh#c9,PCLT[jbXemh&bRh&b(QlR+c9cFr&Ljq6&ZEP"ZEX$06FV06I* -&UeTKSi%)9T!!Q(F)CI28&mmp6N-ZRbaSV'Y46&5q@ME2I`NrkaX2jZ&(R&ffIM@ -!Lip@L!"cB9SC,f[CG-,`*YaXp"@*@@8E"bGdiNC&N!$RQ!1Y#,CQYQLbf!e-i!B -)h%!#bf`#0p6HLjmU*UU+LDTkI3b*Z1Kf5i5SKGm8-k2i`c3b&3[(153Hk*9aMhH -1GdlRbd4#QUTJL0c"1j-dl8!fIi%$ZUR53'N+2p9(Nc$kqQmmC(""G3)[G3)"pX, -je+,3A%PYNC2`'"V5*9`JiM8JBiXqQUEc)4hMkF6aUjA[cl6'5LkRl%XJi3@hNmZ -D8JUYX8@rp"0bkKJfUH4bX%D-6EKFjd8KGJ`IiGXIf!4$DNcN)k6'D)3*@#IEhk` -42GiKeG688haC$9F+f*0Q)e#Y5M)h,F(dllqC+4jIZL34-(hY0a21iB)+A(6La)m -0cjf+GrPkaDeRB1S130CHPJ,K1"-L`maie"0cX(8AEIhr"a2PmXh2+1RA9C5BF`D -$m!(eaC!!B8*FfrbDTUH'(pR+M*mbjh1+,c)pXeCG)-abAE!UM8pGjI*58q(T8P2 -ip"-!k6N66paNH'l1#pIj`r(A03FHp-kCR4#-b`2!kGfCbCD+(c`k-0c0#D!TI+- -VYC+Yb&@DFS!8pVYa8G@H6Fcd94ZDJ2$T8Ma'I&fd15',jIrS'Pj2F1PdHlGC(de -#*qFTV*A@[!TBXD$Tq8VVAFXU6)@'#T9SL'Z*icmH"CC-0k!,%jFTM+PIG@M$f-4 -3-8`X)0HSS#%Ur3K)[+3*($Nj!Q3c3q9@hm#j[D3Q*8cG#CGfMKMZ`3Zj@r)THC% -0T[4-f`,e#&-rE#Me2jei"*9HD$MV#i[(A)2aBppEEVVq0c00PF6qq@HAQjYQiZZ -CrU,@bLfPmmkHU3L-CJ5Rpk0IS!-99@*M[*@D(EM61dr3*Hk3!%jal-5I)hB'-XJ -,b3V@qB*ZA%C""Ul$%I@bH+MLQ4eDcr(V$+E#a%6$@Am)LcJlrc*IN!$Kp'QqP2# -Cdj(4l&%(dVi3S46Dm'Nma,-ABP(@0i!BFrf&RE1LS35@*%CE8Qf`YF@''*jA2qR -'P2fX6lTl*SL2hAP-#pq0'h3EidGmrSjMRh5lLZLRjrQlMh'6B"95*,j!+[AXeF) -[r0*I12-A#mGrdZd2d`(a4TrH-j1,T'6rcTRL-Hj%bYh1k%QK2lVJE&+6TYRrYV$ -*D,aGFc5"EY05NR#KTabk�cc@d)Ja8T59i4Q,9M+2,d([l`BET)VXUKQUGmLVD -!XYIF"Fj1SCmf3kArB(l6FR-maq3Y-DF8A[@+Xm')*&,ETB3L2ab,T*T!iVMLb!D -43+dAf$CH"d$UJKIKR$Xm1$3#eaCH41V28ip,PYXP2BB1rq2HFT@)qCl5TU*$[Di -abhhe*$@kMHN0NJ@$aBr0i38*Pdq5(E1TN!$5c!e0##"hFFG0Pim&)MApe+bDbkH -JVF+J68T!YTmF*prmij4J2G[ciShT1)ic40E5&2!fDT`Hl&PU5!61H2&P9fi6ARI -h-,@2K"(M"GR3USP(mZK5Z4I2rqIkbh5$Lq@G6Xf&XeeLR31J*'ce(*T(EdACaH! -UfU,-R$)Jh5"8`9m(eeMRd-,V((`+LfAmCbZ@'R,,!4aj`9)i30@*60k9f9UGSq[ -Z[DVYJ1+ZF1kT%+QXEjjF-!BQ4*h%aJ1jjGD!Ci)INf0rm#CpjIj3JJLjZ0bZjlR -b$Yd`3A@(9Je!@j'i3r3LZ90hX5EB@2QBZ@l-EDH(08c(F`"jlL+3!)TAS'Y+r"3 -32C,)YJ,%42SU%S4cbp@Qm'2R#[9RYJC6R+XdNPm4"bP#B-0cTr+VBb9ep(0JNlK -62)9N%Yd[*V)4CU$T+NTUYQXU&4%SZ!*ZD'IR""@Nr(Tqj#UfQ''D1+8caPK01f& -Q3!rD93$Tj)a%J&)*e4I%4PX3if)@Nkdj&a+BVpm$"Kpr$P9VQ)$%r*!!c0)hL+9 -)pGpCBLkB#SDb*UIJ3k46+QQrVUQjFV'Sm0F&Ja+3!!VXDZrINf-`31N9!Cr5VE6 -p,0b$"mAqK1F1EDT2DFC5fl(XJi9lTlq##c6Xe3aJA4%QL(9J#,R"%f+4Ijd+6-d -"M-mb6D'0c4@bkT&ZD&FfV14TV&H0Y#N%VEHCiS8SEVY+&N@ZR4U[(VZBNhHD8LV -D*U)6T9#lfCr8p5R5YahXYXJIaZh0SHIj-2r2P"!4m"mc-eTicF'*`TN''qS4AF4 -%hkb)[TQ*,R)@rAfEk*E'I)*CfLQ--QX*r)K)AV9U%F-UED38LDai&8%J&L+HG&1 -,DR+MImFIV,1aM8eICBa+U66PN!!j8$+-J$4bL%+),)##4!rG`f5qGmmJ3$46BBQ -C6GNL-XhU)H-B6$'4EK&F%@1Z(ZU``V5B##j'(p11q1fU',E4Q`"00E8+RL3+l@4 -+e)949aH5hE[MZLrlh&E0'PAF,T!!5INA+Y"#D@Qdd',,De1A*bZ1j&Zjq9043Pf -4R'M+#&85di&+FYJ368NX@@a(3('0(Y&Jl"FAV)8KMDQQAX"XiAYe-MARYl-*E$H -6#(CJPLP@BXlUXiIcY$rSZ'EcKX)1c!M36hF3'8)T4UL%IP4Rl!Xc!RRYqN3aar8 -K(k64*IjeIZ%!VN5`R4QA!)')j(#V2di,m$YX@lVXr#Klj9!@BDFZ4@R(VjVBHXV -YKL9@0a(cQP191+!FUANKDMGPRD*f'$mk-hqLXi$Ndk43ZJL&V1cL-eCC$4FcMFa -%ZN6q%)Vpi8*K6'A(-aff)F5+@cCT&r5*5&0hX05[#fUeAEa5Lb@RjPXZZpLPiAf -UTZ0beB8p6BUKK`LKXTmC4UbpR9HI2i"8MGlP9'dhaLR)h`X!Z-N(N`!dLC'V,%r -I42S!+R+qV)jS+dUj3e`J[k3dT4ENUrjaTL4#MKTPb''P#jl3(FRmSPq891kYa', -I9#F46dXVc`kfU!)(0&PN2p,pG9-4UiMk""Da"bHQ!JeJKGJ*$H"Ni54Hr8Vdd`@ -p3FVMXBmc%*HQ)N0l$Sq3!)d`LDR`$Z%VdG9Pq@pd@DBl!Q99&"ci5VbD3mkA&Ic -8E8%&AQK8TjJc)TbP8'B@H-aX%bYGq)@lm@(U&Q60V'C0Q)&JNe93J+T$,Vl8mfq -6@jhJESQiIFlL[%0Ff%YZ0mZ-F9iN0dIrNYS%1AfTZJNd-S6iASQ6),"58"ZNZ-E -Fe-l"#EJ@qACUmMSR`lQ&BI"`L(9-G+Y0)T!!P5j'CCXFc`VS46rEAF[R,S[mE)2 -8d65G[4Sh9DBk*48er4b0hj3L,(AqD,'J3qTZT!-1QlRcciIN4I`!"(VC4Fq8VI- -i8+ddrqN&P("I$cSUlJT12m)48blSIZDG*H4j1e4FRSQ0MYPcmM5*!MN&5Cj(Y*X -abITZS&i#B[[D(X'#dGb+MfJ4P`L#,e(k)!$`4l4*mmYCiaX,NL'J`X2Qb@BaKiH -*r#h"G$93T`*9HmHbd*EbRD4,4VFah-CJUJT-89HASHAd1$21Ebh'MJ%*1q5$fKV -H32[E1[($$q`G'pGZ3N-(-pZ&p+@[cVQ#[c$lA(`lL@23@8T,c,q,!E&S#&1+3"" -0+S'J9*fchY92AdjS!TULq`+6a#KC+$+""lZX8X4`*I&EaB&f!X$Y"8!j3SdbKCd -$C"#JDh!QFjTfAeX8eHcNd0QPbj6U9J&+X*rQT0[BEjGfA+5IjpA!ad3E8YZK"V! -[CJ@cF1N9@r#&)3q#[h3CGKMf-SNJGd"dQ@)G0qkmI#XZ2c$YXRJXp,bp+Hqbrai -!$J0L,#"d#MfaPXMUef(b0IDAF[2TLqD1m*SR4ili*SR(FTmAQp,q!l(,hYTpDm9 -'1PiN[lc(&0YLCQ30hlc#IirD"3ChM25FG)3LXK3eb,NDjm'jEP4F(`,0QBeZd!f -f`#D4@lrITi#k$HmdZ"AiA`8FhpbY#+F[*H#l61kM5Fp+-L@9d"rK!+E%+0AG-[i -Vr&%YRS1TiS6AP,2)i#[XR-NHLXJ&-G#$#[`!hADqc%2"-%dE'ja-J*CDZCI45G! -3P&bkL&d`Ja@JEE,,c+DATRl3HNHUG*BZpKiq,VRf%h$Ab2lB"B9@l5ID%B!@SRE -%08"IT0ZG[V"VC)6"i8UU`ap"SFl)#rCP2f8k1!2Qe"&bAhQeA5'X8qQCDkL!9"- -5Q2$h3k(cjAmU&`j2qIkT,bpE`Q[TVk@fUUTU#6iXlUpp6@J4QLalGYjXHGEbd1G -I#J&mP$iccG,acq[(#BZ&abdE,'lK"FXU`6pqHBN`LelrJr"r1fqfr&lia,+B[EE -d[LLmp&GKjPph,2VGkLR2[2cD-jerIUSckD@Qbm)h"GmERd`*Z1%00+h$mZADYF* -rV9elG2cAKDD[#qHr,T6qXr$`pbmh#8ppA6KJ'ErMJ2"IPY%llV@mq2Nh[K,qqqI -M2KAqM-mGRqeb@'*Eha%HHi-ZJ+[pUd$V,VKSZCl,%`i,JDSU)B[p'2(G4jBpRGH -%mjBI#'p2&LjErZ%rPPYQ6"Bqr&Ki4rKmJ[$L*q-X-6a-q,aFZ"hUIN[ihEMRK5R -#`Xp06`Q@'F+b*`Aha5H%P)q&mm,C#F,VJQ@FjFl2'i4A2ppVDIrm6m)[K$)FQ#A -mbqF&6`RIR#'Xj`H#-fBYR$(6FTH`82Mj0#&[K[#"F(5'F%,ipM4KmM3KHiD3!#X -%CJL$H2'Pm-%chbm4GJU@V5rpcT+(CH@@[b(XHZPIThaj8AMLYjD*FbU%`&p@VKD -%D49#f5SKm%EjbSXIchP9Q,AZjGm,"9m+U60+KD&j3UMLVmpIr0DTXPRMK+&biHP -AT`Rr85SX"J#3!aJ!!#(i!!"6-!#3!`J!N!-J!!!r2!!(UI!!N!-+@-!!AF!!!&h +5"6%hBD,TBP32lPBkr%L&kPZJkaIRkAZMBBrM!+@3"!%!!$i!J,5KkFDiRKDr!!! +0p`!!G6N!N!21!!kc(`!(VHF!!&Fa!*!%$`"8DdaTBR*KFQPPFbl2J!!!3,*069" +b3eG*43%!rj!%!*!+J(!!N!C#`G8+aDHS%N*S,kG02Yl8q&c')(UPE"KHXQ&Zc%i +kaUL,pP3blM$fb62q9pN5L8GTM(GYT9jP$M*N69HMfMM(&jrI'D)`ZGQDIB6dIJG +PJ$bX2*BViH,kVhGJ-2Sa)GPS`BZHaT[L`mVB*&l$#Ye)rRe5CId1$SrYJIXd(cm +h$4Se$M4DKrm[U%G3JIqFkej&PDLl2%`9I%3akEiP2H%&0T6TJEMC*30miS[+El! +,`"+0HZ%q@5%l$G+Tc"@`D0K*N!#H%1T5[FJaT%dIb%AM[5Rd"8rr,,ShK#@YIU5 +3!(5V)9+M*HN5rLF-3S)l2J)Z3`Re2M@aZUC8iKM+p3emM$5hP(-*m&A0Gj%qaM8 +2IGPd1,[1P!ND&'(cb1'eUQ)2qM""4KJak5V$fQ")mUZ99!DXA%0`)!Q'jU!N$0# +I!HClPSMdmI&A6Lb+M,5)KP6)*j26PS@C1BcEK[Q@X40ZX3!MXJSaQXFHJ%lN,-i +m0Z[3A"Dh[-pB1L-M&%lemcacAjbl$(bHL%#6Y'0hL9rk3(aa+KFVZAbMZQV$U'H +FARU#cNeBKcR9BcqqUARkC,k,X%5ea"Y&-%f#DVR"F@Eq"%Z8VUp2i@Z2`!)8'36 +[DS!e"!S+2a0lMTYar)L+YM'"UQYI%3q1Bm-kGB%'`q1Xh#U6H2l9d#[CBha(9+8 +4VVPkQ-ipr66"[-mZPY-Yc3BPA9'c40*1,eMmUrjY%irj*eJ`Pj)AbCbEFSc[NcG +"p%N2(!24Ll[!`rbmiA-p"98JX"#P1Cl#bZCNMDc(!+q&'HFcA'&mhR%e(#&4M3# +dY)MLd,p(jk+1ZICahbSVF!l(5k9bAUcX13&VIIcKID5$@fdrqq81jhX!@NXm3kh +9QP$q@fb&("ZG@YrcRKi*!6NhJU$Q*m90'IcUheJi8GVUSpPrN3TUB0Q#R%QqJC1 +ESYN!dIeAFC9bSK+8hXZ)5Jq8L3VY-%V1"4m%1m!Ejr&&YNiEkAJG@pTQeMI`&E& +(0K)%b+(LQ4!!ZQq2%!kVL"XHA`XLUIk"&Fd9IaRlT(JDNH#8PE-*)pX44c6"fK0 +r$b%@3GVk&&bEN6@CU#liT-q&@I+Vj(Yk5F(bZ33r&S,JKp3YdMC3E@"%1RN3D#) +p-pll+9e#b(ieJ5M[)IXK&h!8Sb468KEc"'qKckbB8BHXcfiihZ*JA&apaBr6M6D +DGIDA9aklEp64"N%R8H!4@V8im@"@GhKc)PfR8P"AYlK$1q@Y(6L(Qk3TAUeP5kI +c'M'H58!qD[)i[Ym&,h!YNJ#'8614iY[*c*J3!!G+iVKdqH9haAKBrDp@!Km&R'X +APND4T3&LFiVF(F%RDhZ2V6H+mF*XrJaQ1"9F)Pf@MIlc`h5-YHUhFe%ch0[6)Mb ++G0rfm5TF#If),5YiRL,jhYSI(MPec"P&lYYZ9rmHejL@D@f[r5L4NaR4CAri5A4 +qKV-G)lbG`5YE&!)NE*&pUXTd9C8%H1j'[dePPD*$'FDca5'3!,Il@M#REdahN!$ +3pbCbHl8*TYF#AA4l#A&Je4#)e$BkE1`N2MZXF`eacR9c5(U'N@%lIrl"e$T"Ui6 +d#Vq2)j3U"4D8G[Jl&%[-RJN(M64!Cd)j&Fi#DI#SVYDIY$AHr@,S4K[MI2!Ikhr +AHYBa[,EbmK+GLDlrJ*5i5,5[e6MG0MGS@GG[CVLX$1Q(Y0rH,jq!XX-pdVidd$% +0U"`G'6PDeFb6lbDbQhP82'BiZ[hH89KKXQTm+b+Y,rT#[L4YGQB0!D'aV,kcPZ1 +`$aMQMi-j@Eh+p"H@%m&*kR`ZV-Na1kcc4fH4C&i)U6Nm)Br@4i'1iK-'mG8ra[m +@*8dIN!"@mEf+[m8##)[mFTA6YVR8QTKS1UXLc2I'2RQeD6)&T"[J(r!Z#eM9$Tq +LAQrY256TN!#,JL[K`f9,48@mrTDdPc*EJQPL2@&$B[BQrpXTfGlJCH)6%*&S,*@ +*CPTrQDVUlh!Ji4A9d*RUpeCipkQ[Ta0)8aj9eNKCLrB'#"a-PTH'CB`J1,jZ1[D +!mKT-D9[j+!([Q'4qSFm!@*N+bVL@Q&C3PG$2(QXAC'FaEIhrCCHDH,A516`j(6& +!*-&%LfIZ,1l`%1m9E@QiqfaZ&f@Mcr(Tl`Y%8dP+Uh04#Te4&if656Z#fYHa%VS ++b1m+3ZmUem[U"kL)ZY`ST)$V*Nf8S&prATGMPClcP!3@"UcT+3BNmc1,+)45Icj +'F&Ca)ZFp5c*mD8rMKHh`*DJPG[1-$f5BYCP9,Lcm*Dl,HfQBRrV4VTT"*`jEq1J +8&[bRV1l`h+Y2BG'&QR3RM`T"C#G'3eMBqJ@*5ZA&YfppUQXRT(*dhV4ed$Vh),Y +4mAr"GAM8jpqAf-bd4F$[XhR#a!CmFAbG#Gmq6#,E0lT#)Y8[X*DrN8J,N5HP5CP +5aH'3!"LjqfiR+eA"[(Eh"Cd45JiQRid1YqN+jR%DT+Z%`PkKbm[ajp!HhhAe&-e +fC*eJEF$Yh0R1Nqj@#EBSbZj1&22h0D+H&CU[*HiLp6PmXNUN4GF@pJD[0iLYmKB +9APKRHHVMJm&DemD2f'$+QrV3L3HBN!$Z3FV-G8Z!l4+chF4`d93"+MA!1k)'d!d +$I0Ehe,XTG)9+-YC+9a+FSIH6Ljii5#SRG1PmUF$jjq*Yq3Ei5-1&)EIekXVb!NT +KBK$XbQYCSe6BIU2!#"R*qAM6TR"5$`lmhBD"&cmLkMUNE"ApB1r%2T*45MB$#)a +Y,5UR40JSYj0,rS`I&P[E@Ta&+1"YGM(LG$mrPl`6J4Q3!*Cdf2UBTEl28C%pj-d +98A5#pJUc"@UcibLSNkjajVkT0"0Kr'8*BKP89elXHl'TYQjir8LAh22PS0i@%dU +i'31%)eFU!)4Y+j[2XlL0"4"#fpC0m@q#X)`V'@)HA""HZBQ#l#Bj8EdMfPra3r@ +NR9EEU+cU9aS#Q6S+%%3AbGE"iN-*(U6r9MC5#)dc3"+V&KpdrD9#CiBb[(Lb6c4 +5!ED&Tmd'22G@8laIRq1A"FFc5q-1m(3T94l6LYHQq`mKG([I"f%SFE-(qeJd@E* +kR@+L6ESG%N2-D'GI`%VaL"h,`0!Bm!-6jY*PV&L2B`83ej0S[#C2Ak'X4RjjYNC +M85pC*fT0Jk!1&#'Zah!i,hK!S['%RR'aVE[SK1m!1Y@H5$K2hbGA$'#!ajA!q'5 +K$@8-SpVD9fLGI&Mcp8M[1DLF6V6,r[r%M(dF(p"D#d8R#6$Z-H&edj'HZ&CLYjR +TEjFr&cBKal*h91+Lp"'"EU`ml'%L%GHMS&XZQrF*4Ikp$IbZLA@XF"r!B%5X +Vm%jZalQPSr#j[DMHiY**FCph'[Rd9M2dmZ@Z#e9BjRVY'XYV[jIK0p9`dIRm#Km +,R#U3!,UR&P`C-8c%,P2fk9#M`,RDX!4SKDK'`M#,KFX6E-+'R0e(F%FHHDmEQl# +#2+cIh2VLP)Qq+JdFBhLCUVe'k60%LGU,B#mBKrRL1$c&*SJU+lpHKKpKLj((JE* +&RMDQ4("(3,r6XhA5#`+,+2bqV2b[5AS'XBY8#YSL80XUPC0ZA2Q2-DKaS8%T8c5 +2%r(M"VEIL1E,F+jL"jMPjL),QQJCReCRPk@MjLJPGQH")"p(hja[h-(c4!G@3Yh +C3*SdQhB"VedX'4J-#`@++5)+`*9`F'-R-T)K*rPQ2!Ppk*SbX`Lh"eJ&MYm2V%T +Raac6Sff)21kIUCj9*4%c@l!14Y4Y8`Vj2!9LXbJ%8e@[UQ0"!ea1*Sc9Iq@5Y9+ +(Z,B)YF'F-+2V1md#ihEA5YJeQFc+&6KC[Sp)+3E0rqmFRTMh$@lZ3D#(!4k&mD# +c5Aib-*-4Shp$Z$0U)K81mm+bf#AUUHj'bcASp4c)c3,))RL`62)bq@2J#BcM5%c +@XSL8CC!!I'IZ`HRCQDX&'+YZBj2BQ*+cCJhY5Bl1"kf$d6bkZ%Y2PBX&'()lJpB +p+dpi2+19idEL+!"eD$m4#dT$c+V8aL86QeMJXIqa0B*#eQP#Y)[ej*6V0YSdkCm +B1p*'PI+NjfIh"1ZGFhj10GAfGCHDmd#IeU%C8X*YVbp)q-#K!6[KP5bTfXJ`,l$ +,NBHrdK`iccMABHd"FY@'FEmG(%LlHSACiCH2lH8,,6E2MM5C[ZND+lG8VLJS8VR +,"bZ4ELQjdj8dhAcX&#QQNlGrQCNi6dX,(i,d[ZF'-5&i9VR-cB+4p11SSdTiS%Q +Y*,9`[Ca*(lc`Tm+08Q9e+1!JjkBbDr3j*cI&J!-fCLMpi,6))dP%XAfdl,,8Djr +'c,2C'd!ZVebc'U6)%e"rSiAdjqjbISXfJ8ML83QiB6IGq%['ql+!iAaVp5*dLEb +I64'N[UIUhpCfI`8mKIrYD#XLr'hAIf&5SF!KJl"Km8jb1%HMHf,qq[T*4J9Ar,D +$!jk3!+3)aX9$"''LGeJklrjPc,Q$j%bT%DII-GMiUjeV&"*E8Umhb563"%h'e0# +k"KG$dY8f#4*NDp0r[e!NG'heTVpMN!#ND%5"Pr+AE$0Y4&5f91$h5Y'aYV9K%qZ +3!$ih!Kc)))59HTHcT5qGhRGQHeGA'4m%@95UhEU6i-0,jVG5A((9RSm`$S8[UlN +a*(@IMCfa!k)V(Bmep8[Ucldi)h)222YZcZCpje)S5+j1Nklr12C!GYGUZZbUm5, +QIiR[fkM'fTq6hchcKF,G0[(52'AFA5Mq$1MNqlm#-,(i,BU$lKZibT!!eM%fpk- +aU#6X!PDPI,Ci@UkqMi5XBS3@#`Hq0*VkM!pZ["aMGX@P`FhpM0&ih0eH#$)6e[& +U00kI+'H0Y*,6ZH2X2dF*EepLJKZJrKDqFMqjTT!!TFV-(Y$L@Dd+6PfYcqiA&-N +$M[0B3rN$R%@'@CR2Pp"k1`mI*C''@N1(IJGY0Dej0YVIA"211YiqNZQem#IS#k[ +)G)I%UlhQrXYEeE5Kbl)k-dHlKM%J9IDl1i8pZ&B`pZeL(P3c!`%rlda%Q2S0$K2 +5S2UffF[J-Z&La*4I"Zlh4UEcIVd48J'-3R%'fF,Z)34mSa%lk20d#)9e8A[qKH5 +X#D`h)ha,NfDbp21,Fh*X*-1@'BMYKrZPf,X[C4Sma#arH2F85Il*jeJpL2@SrNr +MNNeI%0`P3l-%UDC&QM8Gi6M*#RQ*0UfeZ6N"N`PCMRK)UARi45-VGJ(BL5`ULk( +r-f'3!+MQLa85L$kf6p0QN`LV+SmSbY%5$b!EBk`kUD4me&h-fDR4[#NSI$lU`I6 +6XAH$m(*1bh!Q8rDLEJI,CFqI9%[8'!4T#-A#ZB4fDH'+#S3Y4PXJU$dB,Z0e`10 +Zh2Rj,mjDa@'-Mh5ILMmYjGbf09"prDFRcDX9e+fSeUC)rRCrD`L`BL-EH`TYb9h +hq9FdJ*P`4`JU[1@Rb$!115E&K3Pa-MK@T5+TBFr9)!&0@JF&3c@iJK3ieJpN%!X +JpaKNAMe639BKcPbF'GAUDM0"D2ULi)F1iG-RM'hfKdbc%J-eHYRCPFNhDm5*T*6 +VBf[Bd@9GmrXJL34i#$*T5%m1eTkCVZ1q`bNQT0fFSbKJ0GPh8J[FmPV8j-FcM[c +[iQr8K[e6e$"$p,Z1M5aK-aAjEDAVejR93@,qC,Y`5'3V$KL![I'YJ$DEGBNYLeK +Nl2jNJNG1bJa@*V"@"+AE5Lhd*!q(X2i*k0jPDp-)p#d3pf83"4JLrJD&'Pq*L#! +QQ$$)VU!JE&%$58S-bl*[lcHEm0VDF9@0ef+6$(qAhG@+K+'qYG42LJ(N[CS[[FR +U1K,D)b)l[hCqmRl3qYN,BV6D`$T$j'VMCr4Y814YPd%+%%%GMC1Pb[CVfb8&bf4 +5H"-+kM'U'-3NRUd-+KjH01(qe)P"(6ij!0D0M(@SLhl)ICAUrSE9P8mdDL4al,q +"bEEC832(MdDh-%'b&M+HBH0kRX`AX+l+#jAD-3-(N!$XRE3$bFJA*-AJ+"1kQ@U +bK[SMZCT)8iDa2L8QFK![(qkF"mUBd9DT5#"*8Rj,%6Y8*c$0T0XRf))0Q"r$[0f +)c@d-$LT,8HJb[H(hb@"6Z8@a5j3rSfrEr6*"35IdXR*XbY+3!0bcZj!!drim6&! +F[Fmfi`@)#1XGhb9$38FdI,j9Dq16#S8DM#mlfkAck`amC*AAIQI&S*1bh($$&pp +l1kZS)LaLbbKp-Q%k-)DBkRTZJN1L'41$AfPYb6YJJ`V@`h'B*"EEbLErGlkk"Xj +VkSPBk#T##%A02$3TE*hE2ajh-38[,-jSi,hj`jqEIUhKG-8C4'S!3RclI6T#Kc6 +%VEDDc8%BZjErAhfR1(91lV44&2+J[NL!fNeThe4@ceQ3!()+cfB4CP8T4h"eXKD +@$Cha$UY&ecjp"N)JDLAaX%4@TkMi)9S"T'H&e9AE,JS1YT1A34MShCLZAm6BUMk +N@cCcY`@1[T`'j,LFfiYhd5UM)qRKm5C2GDrr1$&BFb@05M)$hX()j1bKB#pTUP% +5U`(1DkRff$&P5BBD`j&4KK[k-9L$(VL3!#c80[YmF%TqVMRlCk,%UR-&pjU,3X) +cJkKUjJD5A89Xj-P@1Q`A2Tp'Kh2X-YN5rGmceV'P652Z+(QYHDXQ4$Q-U!k@*D' +ef30Sej1HDXmC[CRSRT!!cQMQAKG+!qc0%dF9[X[1SlR0&Yr#P3$PX2qJeZZBTc[ +kckMAJBdNZGVB0dZJbq,F$HSp'5,AMCTT+4&4mm$be#Va`@[@(55Ei65ba1JN0*5 +8V`GkBL9aArTVI9BE,6H!%ai&Y`C*KFcrZ[hA2@qBJ-(RYhkFiY5kHC,q3"CDUfH +Y`f2CYU2%q-URlra4#)e@RfJ`Ul[*A0ZfDh8162EeD+##4#BLr,`3[XBH#CF(lCG +8TUhrK1JqVa93-Q@E8Dph&B+9FTF&Ld$5BC-"VqR1R6j1Y4c+,JGpU2pJ22[V95A +GQk90f!fB21G-$Ir+A#*49%5!P"4TcUkF)Ui&Q#8f(6RGb(JDFAlFkB`Mhe#65Zq +M'3f*aj!!aUR'eLJ"E!)U#@10Nlf1Pm8Z[l5q(Eh-dU0SGl`qraaJN!#CqLCK3cG +,#NJFP9cYU-ZYY4k$2rEdjphN%JVYKY'AP@mAF"m(fk*XTKN5+LCGYXD-Vp1jFM3 +[%45UIm"@&acZ!PDJFHfp,H1+@cJF%d0*p[2B1lHEjb5r63M'Jhpj49,YVAk2DAJ +22EkVr,qkRN8ING,%i9Gr0ZZRQ3iN%2)DTSKbl1fQ"+c$8X!CC$BHmLEeD-+QD"I +DZ1PUKAePb,ABrTNBhNQ`-hF+JmS26G),Y(mFbDrk#qraPCUG1KP4emVdQ%JcLGH +jG-!0CEQ@p(p4YS1qi-4'j-iEBBaMlLd*U6jd1[eACS&iImK8,6"`B*3LK($pdLS +H`Z`"cTk+iJIhZT0YDA`*LBMV5G5p`q[@2*jk,A(r65ep#I$4EVMGU*695k#+R#B +ZS&aeXa-05r0Q1q$jlfb$`@524)4k`,!YAFCXpiTTM&VV[[*,@deRQ891UFHfIjc +UR(pT"YMZ&556N!!P)S%88TkGX0DDrf#h`qm%0IJiUX86KU(I51,l9$Cq!$RU6De +ab$f'$MQ1IkNk0*@HT$pi!L!%r&4#2AbB8dbcc#b5ShTKQ$%NE%QA@8R,EMcSDS9 +i)Y%pH9S0[Cp)##X(&I%JP%X&N!$%QpcjT#hXcATMZUCTI0C$IDp-%Y@(h9)"AI% +61R`+l58Re)S8Y*&FRI!Ck+ANQA5@#b@E"d,3Y-B`[&A[b[C9kHifSH1VZ)Y3LNj +f-V)CJZ),`G#eB-$SiG*XcrL&`L!4$Jj*2$h6EdS314NBre-H$*k5pH)9jf"RTY6 +U5rrAklhf60`090qV*MY6X6bLQ(2LGNqj2M)T4kMKBmrC)k("D1YHR3PHT-6J#[I +0bA,46YI5DEA*DIFh#XK$Me,Y6l2Mb!(UD!G'#&Qp[)h%d)9P,Gk8E4FDN!$f56T +aM*JTi6+K1qM%9Njd!rHAdL1(+3%lXNN+2Nf3!)-hTbQm"ETb3"I#fJ2-XZcR&@a +NV2,6'AjHMMX4mpfD(LkK,*3,P2M6krR6SFQBr'h*LEPkT-F*2GHDP5T!`([+#[i +&k'irr2b-klmYQRj!Lpaihrm*&ElE+,cclpmCSB[c#KZib&cSeUU'"fhDB2)r#C! +!F&,ZGJrar%d)iMFhV9&1l0(R!T5+$h!F+CNbV2$CX"BlF52+c@&3QaaNK%8QMpH +&*p44RBh$`PKTe"LlpR8f,@ZmV-%KXKXkdAL$*VjpE)(A$p%rpIT(iV02V%K'E'2 +["RZTVm(YHf!0p5KTkLmJ%VY,"c*I#*KP5ZmCl-V,K&Vd(ZD2piX9FL)!1Q&19Zh +J`L)@-YMaX&E8S[kK0a)hDijQNiBjb0RCKN8VHpa*B5e[FErLUmLQPp1Jr4"UJA@ +"LrpCQ(IdB3TeN!!*28T+6Uj8I2NPq9b09qZ#cJJEJHBUj-kVTCBCQ(H2H$``)jf +l#p51QDlV)JmDad%FGQZSrLK,)i,Q$IPIFT!!j-1[)HM2P&$rDT-!i`,UcYdI0h& +dC)6l5e!rjcP3S9$K32ph*mf"$Z%RUi4KEN0+ii"3q+c4@DLr(FYfUiE&@q1h",G +A"jiD&`d+V5%CHE'Vi,MZ3SVTi5j%R3#Y$6r`Bbf(8Zf)"FjqYLj%c&[NF&hdYBr +&N!#f"IGC6[miVQm2FepHrIU`H),'c#E4p-kXY*hde1+106bqP4VbH6+KSUPVR2U +!JVK1h8U[q04-aD64B0r6#I8SQcJL@k-S*!9&+D"b%)D[p-h)5KJZN!"*YNJ#&`8 +Ha,lHL[KQ)3(''8+5H8NG1&F'2S,r[66caX6L*S#69V3LaEjXh[30q&6"(M%MMZf +iQ#lmpYL(mIS-QqEelFp%ImFSVF"(ZZk1l`3LX-URXiGqee*pMTif4,hc!mP`UZY +IGr)d4((Jam4L4XHBBqd)1@@,8C9LRN@%r0q4p$3*86i#0IQqcj)e3QJ&6Gqi#hE +%V#KVhJ%9pl!rNaE3&iL+8cQcT`&j1a--kNK@UKjV,I)P+AckRdNSLH)SZqe2P9Y +p@B6h+rfcZj!!H'hB!mk4hSRAimZE[K[h'eUlb3!(XI4[aGr9id2L[0NJV'[jlXQ +2$i')&hq9E#!Mq6Y[%CMj$5mp&QZ1'cAT,mFM#HdQrCN0aD(FNae8m`(Hc4p4ql4 +@bac1d)Aie@pJI@l*F2Kc(8''qiUY+HkP"*23fEHIld(8S1cRTjcCR%8*rQA(2UZ +6a4aT5jk-P0ar"K`AAfB,1U`EZdRq!)T`HX#@A(9UZCh&N!!BGZ8Ul(&SdT%),@0 +`**IXQ)'S+3S1!!LHF%6Q920XAifCUbr!S&&*MX[6J'cQAU`0$0Ck[Z2m"$D(I56 +j(e1NqX"V8Eca4$f5YTkV@bp'fb2T9AVL2Dd$hI3eEkd"Jj0MVNMARak`q6YBFTU +aLkHVf3#XaBRE&-!M0iM,aal3Fjj4Ke8I,re##Er(H*6Pi8@DQq)(4J-kbpfe,A* +cMH'BqbQKXAcJ"STQf3mR9h1`F2"6"lm%E*dNK"J3[@pGVR3I&M0c48S(FBTJj*+ +R0XkBUhr%*k3*QC(6eS`YdL1&Y+YDJ4)+YlCMQpb&$SqAT%4cBch*[[+3!,HRh)Q +j63S8$28RDGTIe0j%*e1Ic"2`43N8Qpe,@3!lRJ-GX[NB*@)Qd3c3Al'@,kXX)e" +EEVT@l+%-Y8$3DVd)&64@d&R9VjENS!'-hk$!N!!X9RF8T[p"#[41HiSDCQ1P62l +3ATSq$XBC!YGY8&3XDlb6[qD[@HlHq3IeCl$,r"FPe!pSE1'3!,PRdNU"A0"mjJ2 +,2BdG83a)2U%S4VMcTjA@TXKXV#Ur85%fGPQAeLhkh&+Z'#kT!r#ffeqT9rSc6Xk +,FIm9Z@-,Fe"NEQq%AdTfIdNc8I',f)UXRNhFI#rPlV5&[CB0N!!9l2f@Rp@3!%d +9eaXM%`E9aP[pB)F90"kP[XabmJb$9N$j+j!!LJ`@-bL)V[6h8+hhUklT#X$kL"k +EbGMmUP+mGjm#&52ej38-R%hpBQe'U8Q)Qj+!dKRRr"ke9E(%-5-TEGRpM4248dE +U,C*3Nl$QicTm[6$CeEq*NXJB1%'UNARSha`$c5(Q%q`NbhKqB!(ZU3Zq0lS5S`D +8jIRjlkHS-aBCa4YiGB"ifY%BJR'Ed6C69T0qJSh0"T!!HCHjHM&"Em*'crDH'*Q +Qek8I[3RU@%(+XX(F#+dc083AE6R(D+++#6TFiX[BNXUE0@U(dRNHfECh[iK6)@3 +#DhJ#r(VZ"G*hQ0V)2I3-6FU1eXcPrZ#m'Yl38qCM'[RBXG5`*A'6J@G&@!*AYbQ +BBBAYF25j1lXh[5e4hSLIPU)XAXm@&D5(@GkNKVaFp'330VLB(pccM+kUiLqJAC- +6b5ZMI1jD!)&!ISlj2Lj!&#MFfdJ"VJ`i"Kj4TAC+#T[+Dj4e)1a6d[(3D-AYrr% +3maV[9UA[Y2Kf4'8HG6Ac9SNeh"8(LphZF*!!@29kf$d$fTp#EJkI3'5peLF&bDP +-2bBdTkV9NI&pQ!-BKe@@Fbdh3QIXMf"mq`Hh$@BUGXb2QQUK4r1*LeK$m$DTrPC +Fqlq24$fh6V9MQQ3V1@``IADUT-*AJ5eRDVAq1L@$Te2-`J[GrD&EHPh!*ZEe6[# +ZVSc$AJZb"ZBp$%+AK$DdamZTLK1Z@FRdS@0Y*(qp3Lhq"JXI9YdQKfQkk@TpTDC +em6A2Hch`4INiQl@mj2ZBhZ3T21BD-Zj@S30EhrHS#C`6%aN94H![D*-EhRZ+'64 +dVb%kplH)0%BAE(Llff4Db[*HCaMDATlE(9qbBG$5HC1V[@U$ZkT(@!m+'Nf"2hq +$Ff1%9fHBcFD!8eTX4V60M[&3R2Z6bkS)lDXIp3X`e2E)(!UrKZjme5`NY30YLBK +SH3k!c!'RbX)&I)p@M@HBN!$#LT!!l3))C!hh[[LP#jDV'GNDdRh!2F@N6c[fpGM +NINSmCEj1aY`G3aIH4TGQH$(I&8GN,KjEZLFSCX(Z-d)Y"cpA6ff4TJNR#Ka4eT6 +TQr!G-jRC4r90Qhh43M*&Ad'"KZj@`@T[d9bUiqlUb*hSFqcVcZA2+XULFC@(!b9 +eD9Kl,!BFdXZ`13DQZ)KRF5Y9Lp3'd@6pj,GdUa%*m4p"rB)eR&bU2R-aT5"@8mJ +hPLPMR"14erlfM9ZIAmQ!+Hfi&qQh0mU3!,'SPiQ$*HXj+Y!,aXdQCIA'j"BS2pI +mjG3FZllH&cC)`D(1brYrQ!eAQdA!L#*Fm[c%MfQ9$qq+J1G)ef#%"rfm8`Qjr%4 +$3++B'aRFJF%SeY`Kl`AJZ[DpD,(5406ICRj(IjJ,XUM#$Vph`-[)mlf[+HF65(Z +,PpE&8@91'LEJB3(EqP!G0XB""PA!8%D4CPAqmB)m'@RE%qd&[4R,6XVr!2fBHLl +bMHL*CEm4mcQEZbi&,ea@F,YPU`89b&JCFAH9)C9c0jBE[-#jqKQj+EY%"iQidZm +b23#[q3aji#TYA3pE1lZI5Q*J'erebPJa`3(#'Lb*pbiZF&9YBl@PQ,0##2U*YQf +XIS+dQ*Lp8054q8QZP6dNLUJQBNd8e([3B*H6mLB"R9SpY-B&V(M#P"@4a8U")a6 +r&X,UBVi4pAe+1LhYH`kCbf[fh4GQ!e%Ke9Y8cQ0eSVI'd0E%UBT("9BH1[5LGAh +@Y#'1G+*D$1SpGEipJQrEiCKB'H6*prd@iUpHd8PQd*D(JFVFmS%IFfEB-*j[YAi +2JrUl"YFfl1P,,5)Ym$"P2b",h*!!`F9(0DXZc5c*Ai`@q[Qk,[13!+mCFD+p6%a +(Q4f'QSC2b6FRIMmUh-,4IiND$TCh0pecM0Z@F[2,e#E($G@"0rAR1X1%birpCFH +Nb6lAN!#Bh+PY%,*8P@4R[R"E"I#1`84[f-iGEa`(d2+6M`Tm)kC'kMR3N!$,$Ff +'SU0%LC!!r01[1ddDjeR2DjV5rSqTbm3DN!!-d`rC!RiJG@*LCpKDB)'C8&Y3[RC +"IXdBm`qa!E5'AY4@CQ&qqQKN-,!hK,L'B0l)m!I0&@!@[V#[ZifM1Gdh3Aj$EdS +[3+E2DZ%6)VL2$k)HGqmRXhi0fXqr$imB8*BU&fZTk")QZHYUV'4YbXQ"Xd(h4C% +88TqNRd8Ik`"P4+cUJYiDG)Cib6VJ2'IMP&LjNI2CZKZL[9qh&!DkQ4f[d9Z'Vp+ +G5Eh)&dXH"mb"lF`1Ih22'RQ'c0(9()LNEDqbJHDr-Qq[6$+eIImd0U#'Ii0S`hF +BA#4"lD0E$hSR6VJN)XYC9$96`)ePR@`SHZjdlc0!K01VJDG#9VprQ2Q5cTV1"ZQ +T"S9`GhBJipj)L)+S6aXdB`I2P$r%"+Yh*$k9XmpHfa$Im(9JN[SIAeAIk0iH8m( +pa$d6#!ILQ+TTl59i#V!mm3[BpYBr@#T0E!DMLGe`LE`0r+jcAJ'2F#1QRbYHJUH +PlG3V1`*[R0JMf'@NY@T'AKMe(d$KHRcGEU[FPBSe8cKikqc)0hSXbQl2EF)l3c5 +0`8ch+DHcVDXU5dmFUGRD,BXri6IrfaZr+`'[[k*`kMQ)J0mK#R`YkE[fX#lp%P) +Y`GY&mRYkqc[0KZ'D+ZCP,fVH&L8rJDN&HJp,Q&lN+!F$+jpL1rpUA@C2fR%l%lB +ej'XC)0FQ,ZK[qK%D3XhYmk32"Y2VjHXc)*lGfD&eE%dUSJdrq+&MEFHX94D%[5V +r[V2cJ5QE!IGrrFUh3S4i8'ZM3SSRNQV4*V!4*CFGqBTbF[RRPDdSaQ)@8rqri&! +TU-"p$`SI[SAS40(*CLKME-VbL"KII2ZF1q5qA$4bm4)j)kSil,hmqc('B&D@2I9 +1T3e`iQjC"E'[bMe`[I10Fe!"Y0diH(1+*1h2IILXNXlH@qD'T-6`2Pia"hK)Hak +`Jq(TLrl!9F3B'AGN0[)3+j[q`ZEl6F4XUdql'058pZZDh#S,aam'lT(Qjp`FQhB +a50b8!Eaf@T6NhX#Z-hja9LfbT3Y5!plm-*&DZ)A2,RlE13!4r"j9I9"Xm"C&#d` +LIlc0&1(SH[peRrSDmYMpYfQ)EQj!AfL'$IeFIbb#pJrd1if[ff14'L'2!Xl96[6 +4rFA6TB'i0aJIBdK6eJ&&B+MlCa*%k0K(PQLdkrZC4m`qJGS$QZLLl,Q-)@iPdpU +[1[X8MhSF#$,ZBqZjkYQ9'LDCda+YKCLreASjPC%`VElM"6D'LZTc!%B%K%IfeCQ +Q8"0($k%LP!HBfTk51(jfFEM2mI,PXF*INdj&4rJ%2$UB8PIJ1MVHkJ@qUVpV591 +$j!#YNH9%k&1%FZX9Ma&a`qfVrRX1$Ja)H%8N!kTK)-hX@fCQZb)G&TLPc9P8P0V +i`)!12$*%IY[j[Y+BfiSb)Bb&Kb(98R$KR`FHlULNIc+YL)8(AF8JTaVfU)@R1j! +!XR%Gr(L4j4Me*HIDSFYq0FE3S+lX'hYCB%8j(%r$V-8*!GSp4Q*fkkN%1N3p2QX +I*m0`F2G50,#p@hV423Q4#kiIc6N,JXJP2qGe8#`VN!$Hi@NY#mUZXAX@55iNbe# ++EA!(rTlp9S@)iE2qTHQ4peEhE#N#P-B"EX$!Ih#9)r5LDMe,q[-l*kbT())diF+ +f+9+EaVG'dCFV[X4BAi!1Dk5Cjr%&!eM`Z+H6!fKcipqaVD9EMC!!(XYHQ3rD#,* +AcmeBlHj2G,IFT!#+0'Y3&TSRd$ei4%I"5l2DIXFL0p5*JSd#iiXX1rl&RScF3Kk +D1KhTkR9H&hb5MMXLL[JaUj,KPj!!ZJAJl"a"mH%QVr+G9J#Ml(Pi[J+d-$RP[h& +IPeFRi621aX1'H(#liLkGM%hG-[ib%U*UZ!lrpqRXM*)b59eBiRk-N[C(m$X,l3b +4r`M&lHI$&&)mXjL#(dFG[J%6h88L*NBrl4i+j*!!HG"+j!mZaHri`qDS%UCHV'C +MVr'b5Bf#I%'C%dhU6'jZ2,I(,B!jc4j`NEZ9Z"MDXim,D4!FK"['FrIrfU21Y!' +Ui!,GK#1L(G3*qm$CBYH1iE@&U,@NR,Ja-NVcR%"KD$H5fBk'bH+bAHe$'J,ZQTS +!UACNXTMdGSNi(4blFjSe-mSPP3%&dA2YV2[3(%B9E(&FD#99PkZmA'Ka,3j-1[- +ZrV[Hi(eXberTpbjfNhD"XeE[*ZQ4(Rk'HN#CBAM)$H,iQ+bBqL,[N!$Shd9LTql +k4d&%CJE%2XYlSC63@dAai41*p8HkQ5CB2@-Hkk921ffR$i4HPmAc9TSYJpM'40c +Fmc&A"SDK&PTZU%R5HRIb#NF'M'[&9L8fiDEc%9h3VA`q4r&&N!!C%'JppQNYYaL +b2(0qRC8-#S,*Y3TikNG%e@,fe![L3ThQ11EQqB25D42r0X!PDZ)p2qASQQHqlqf +Qm'[e1Pk+-$Sq!!e)*`XiafaJC9SKT+('i[0l+Sj"[*b3!)l-ekiAm@ABe`d@drZ +HR*1*AMekqf1+9f@PH$eQJ6IH"*e$T,rq$)Bbb!U%fJU+P+U,VrJXk1'Vhif'K%S +9'1bULTi$Z01@,HL)ffF'%&[Cb-@2ji5P2jCHS@lV1YVH%q#hBB#q#R(qdVeXK!Z +kqNIrPp9M'5Qif3jZ"cRl&YmKZ8QI%%TeL*34cc@MDhImpc*4"2kfIDkf*GG[Q*I +[5qPZ1%e)mm8"qI&aAY$LP-Gp6DXrbqSrSe*96Rm"AFBKX,#*Dj(*l4f3!!fq'm& +VMTFH9NrM'PJ1-PZ8lMRhiQ&NhU%6AU%Q0'HQm"NLR)T*@f4FCVCMXcUCbb)X8QQ +lXF$a3Lj&%8GQ3(DYNGAN32(`d@Q9N!$m@f$6'IXj9lEE"-4*h+HS+'SebeVclI- +Pk"+#1+6XPY)D3j'83[26*D#Ga@d"bGj9Fhi@6)eI+8V+kjGaUK#p#+dq0BZU8JK +BPlhj8S1,(m)ak"El0F'6RMC*G(iVYbQBpCfa&1E)ec3hKJL)E04HpFBq&H##4eL +f&6dr6SI%Cl&FB'TlmVVYNXXc)YNN1V0Mrd%6U[1V60f0+$1lKV%-Xi8NR,Kprp$ +MGKM,Kq&CTXRJF*+Y8VS95d,#[[HpU)`eieC6*`@L(@6AR-efl-T`phL8%MC*B[" +3B(Ya(R)5KU)&+3B9'3r4Gbl"Bqll1-2r%%i3f-M125I*[3NkB4T3qZRfDVBq"ec +9rM`UU4(`eTl+h-RrVJi&9U1AHc*E"TpeJi#*440kGDVhaSVFYR`K0j6m!#el")[ +5!E#Q"ISBA'p)QRqJ$UYi*$X@+#9fEpA6Z-NY84$LC!JH'ljNq32Um[YqR!F'f54 +8ICaA,4U55TRP"3!)41$88%e%!U0@%@$FQ4G0l*XmXT0M'IpNEH(eUe$ccPmc8Rk +lE,-jdmYPL%2ZqN&I+G)&NA#4hF&a-kciESkckQE-Hhd[[f2A9R9f6&MXdjTYLV$ +cQr91D8bbJq1j0,JP&E,+"VG!d6iZ2e@9(2LR%JNZAHdSr3LXj5FNA*X6cPe,kBp +'kr%LR`9F-YKR8V(cDq+HArb3!&MK9[%Qfe1"FD2+Q6hC9dAV#JpFRlTQd`K&K-f +d!erVQ,(CpqJA6S@5dJ#RB5MmPK5S1#hEIUTkV"H4Kj!!0eP`*hMDc+$Zi@di`*b +#K@UScDmb3#B51c*+5bGhLb2),K3N`1$*bddk5Ee`r4JbUm6L$1LYjR*Z'iVbS1! +b-H)cXm2CIC-Qb-LqQB(bc`GK3LT8i"1FKj*#PXp@#iJD0$6C43LfGZ1NVNG,f+* +A%dApqN8[He[QG1+@qKRX6K&JI%0(Z*D%AVUAG[$iLFjL[Y%!50Ijj2#`2#!8!!T +2S&)"iUcfcSr3LQjZJ-5I)5Hd3fBmd&)KaEKfQaZ5irTSqqfXS%+Q&6IFLM+!8V, +AA@kDYXhY,H42G%k%4MU8&$Ue-ar"[TG&%`BU"j,eFpSH4&4*BYT8U5cKrJ5hN!# +cRkmh5-0Ia,#9j2C!rEGbSK1ieAhm*p!KZbpNlm$Z02K-+Y5Qf0Q1KAla8Y0![C( +brBmAe4TrCH@q`Q2X@2jf2Ql1f'F0`[H#e)-&+8e&52)G'B2He(M0dlSc%h@r#e9 +Alb`H5T3TFbkXrSBS0iFdPr%Y*dD4XJ-Z--ZQb-M+qHYd#cMe1$d)$Ff2jTKJ&qb +r1(CbaNNbr2`B,G-Q&Aiq%6+-[+p!3i4bVIYU5#i1ZJ39cCl#)fmP,[8G3RpV1Ph +iPLedFL6`1JF'$6q8XHK[1(%E*DCUTM3D9clrbd"[ip,hDE@S)ha3[+J'a6L'`Tf +3!-f[CkR,[VUYjb2CRmN95[er4raAmrC*2,S0p@J*aRVQKC8Rje4)(jAHqLc)0L0 +hJ4AU#R"cF@Z5PY"%E2i9ke*L(2rP[,!r*B$&Bp0b$Y))[[Jce+G)ZEp(*Hb`YKl +I23P8232Jk1jrP&dJ&IGKZj!!$*qYk8-3H5pYE"a--&,8PLKmLY)5ql4pk5BHE&N +P4T5XF9VT+RX)3hZmL!&LC,50GIFX*T`"6Z5aZP'r36F"jk[hKC(")qM&J0-0MQ5 +2J1lS@-aJ++RMjqjp!!(M@5,cBRUMAp-bB'rdjCk,9P6#1[GL'QSTEjU&,'Z"%E* +b$"G#5)8`!"Y,qHrb,H!Ab2QQ[#KN'r++!3PUFlP*C6`TSQXcLPaUH@Mq,r)30Y8 +AF#`@Daq)KEM$hrR9ShU-RA0'hHcqIY$8QAqFCi!e5F`YDMPZP%e[QCMI0N("K%4 +Y%K)hcR%%5GR3I%+9q8pEHj&"9e(CeaNVq-Dm`4'GLZI1C*MAXpI90EZr`fF3C,E +`hV[%)0!dSYEiEdA%Mpk8SM+JG$F&G%X$D"Rher25fSUYQi3Y%)`+*-FGp(HZ&KG +#@p6`hbETAT&8a&KRF@k&a`6QFSQ)pk+00Se0SG@%UU(NJeCR@(ZUk4QJLSkN*K[ +[N!!h-Zf2UkHjZ)+X0dNj3I0HeF(Y`35JA#98NEpd[4Lr0!2hf$8eQdpLS)6(3Cq +krIM6ke$i(831`1j6b2D3!(V899TkB604Mqr'VEYA6l%aHL-mjR0l'9GFfX3hF9) +fa[K+`AJje`*G[9)a@%CAV1V#!ZX`,P2eENNHY90P5Kd#qGE9d@k![PCP2IVC$aJ +!ANGq!GZHil&8TRpe18,c6*dLkjP-1#B9%qejhe9L"PT9HiRH&L'QabZ(je0GC4$ +TU(P-Nq'#(Ne8[i4%)i5LIIed866S3qH'Nc*4fZ"IAVQHi8F@JlBi)`3[R$X(&6Y +d(C2F,*@qdH5[NFcSBkDBN[iqk4mc-pEC05XR[$LMaYBqVYXR$NT5KB*&QU@"jrG +Y#P3GA99`1JmY5)aR8%6BFE#H0-HjHpbi%X4`CB8Bc!MIeDHDB0ZpNfrhS"f9!*` +S``R60-*IE0c51Yra6[55a9h6IeZq9(GZi#Fc15,KHTI&B)f)%-!C&QHbM(94XpT +3,A([$ZHK#&+IBil)Q`-N5J418`@9m"R&DNQhC6EljNi3[-Q*hX'$rRNBd6c@J[G +6A`rH%cDA8[8jHK-!rFSdEfB6f29(ZHY-0-C,HN2hIBD)lci291k93N!YSElKQPj +*!TS,9Xa8[-KLi@&V&Qcid0D#F6lYPp+*fJ9)mr%B(jS@Md@Cj`GThdJl[!*P+Gi +"14Um%bm*qT(,6c@I*+cBm0dp1`+1Q3c*Bj4ml$PUJ!GkaCQ#aNZ5rFKkYCq)rMb +#@ZBPYq6EL[RPTUj0lD'cBPA2fI4R$brE)G*CYFiU[b`UT)cFV0J)ARDLqjdrj@J +$`@UYllZqYMY8`UKfkhEJTPh[e!K4icX!SdYQ2H$6AaPcl)A%F(!$"UqHhbJkeEr ++`8iJAFbe)!34F!Y$28"Fk2G6!f-%p0XaL6kV'T6dMH2edj6B-5+FNj!!'+5$0cS +IS$A3K3jQCZ(39YBV$QDS&Uk2h3$fd8!,K*F!'berF`52(VQ18+'#I`5ka-AC+hi +qZ[p6Am""He#*4'b*jIENNELc'`Z)-3cK)KZ!DT@QciZ'A5VhVJeTKQbpP,p"a%T +E)"b4a8+Ji0ipAej*-B0qi'Dkb&4FiQ6p-KH%5+Aj3YR%ZcYY3K'!BN(cPq42#(a +c8RXCR,R!2N8r5$m1D6ZNMj'Zaea9j&HkjI0F(&`2J04'!-6,f1fla@QJhi#m8lq +EbVP-A8*h4(2AK(,S)Ma"TqEZHKZRT8lk%Z`UK,@mQ[bQi1!i$pU9X"$91kEiE0c +2Um,1d[@hdjJ4laNl!PYL(*C4Jcc[6!TqP)4$kb,i!-h'6&dQMKA[@BDbhG4A-8N +eHM(Ni$2Z!LM*(F`Y8@X66[K"DMD*`9YG&RZHEZDN`j-r53XM-bSHDdLJ9AmaqdK +Ak(dM$*jiDCNq@kS"IRPFXV(J%hNLmj-4M*3VIr&im3ZC0*P@p,Xqi0j36qbNqh( +-Yd2[i5cM!6(j*IiKh90)cf6)h5ALNUq03aH1ZEaNGciT!LX`UiiL0$V"+a1l@FK +(MeDl#Hq$!!P$cE4Lk1UUZiiHA*@'9LPHK*3M0c9ZNR,M$TCK#%f1qPdaK%`[##f +#HGHBN!!F1&$96iGbY8$-e`ICpe4BAS444M&lfGURYkqY6%Y1HCPmerA)diIGEY* +6"jq)TM@R%cpY([-fB*LIacYAF8be#k`,h3XSDDkD%#k1Y!e6*,hLHC[0MMe,ChI +m3FUDfmkLjX@EqkNT$QB#Jk5Xap0K*%&NSZce3Y)UIhIiTc-KFIbfLUeXLleJYar +SZ5fG-XGB-DD%,-dG`2J-m6d*9ClUQZimm*BCapfEdfJB"ANi,8dfGXD+HZ6U-Ie +Hl[FE9&@$ba4RT%SL1#86U&r-%@GBF!hUiT`X-lq#*p(I!pC-4'P[-VUPqqBC"Na +!JJpXS8U[MA%!+R"6Z$qD*SdiiLFBi1`6("#f*)1SbTkRjHbIDU9834&k'!TBISk +3!$bGq)BILAm"[!GqXl5ledL8lB*ZR!$mm68I(UfU$SjSJr()$IR2Vfqi9P84d)8 +CrMBZB4beEX+pA*(5S8`4CR%fY&QRVBeDL%&DQK-&D#f(+&kR9cF+%RL!8-,BCmV +QT-4KI,05SjjD,VXjN5!3Lf2A4B$CTl8[0jXb-di2Y2VAdN%DQcCSRFV"*YmH!`T +e,iSc!F!)T#*04,+"PSfq2Z9Q%mC0YjebCp45*C(,qhX3'GdT&"e)eT1bE3R!h%i +0IqZ68CPPqH0(*`HeZ1![)*I4V+YN0k$(cU#qrc,K-Qa*%UIS!Mr66C0*-fq"kG0 +e-@YL$1dT`-Ha(Gi-cR!P8F8&,V4hid4TGa#"DH,im42aN3b8Kr9[B-8KJ6@$Z8K +(j[cPA5cFAQN"6UG$ijRh4jC!l2&Jld#Ni'N08X4H@YYHPbY95#-ZCld1XDl6(*1 +h'@dL#a[a*A$pRGqHVJlq`Y-90ra8Q*8q6#ckPm8XK8Peica`VY&LKMD-pk66MV5 ++35*p3G@$+k,)Q,R(cQTSF8$JHMXC2k)TI%#jj!r"Iq'99'drNj)Te40[J@i@Gm9 +#Ji"+AE60BQ-#ULdeH9MHS4Xl@8GZ+G!@pY',mI@Zc6LD-,NGJ6Ai#Pq1krV)HpK +C!D,"dl58fcJ+jB8kL[bV#FPh`hL@45H&Pm5IUT2#kQ(q(!A`4HqIS8KL-,(I)%k +$"ARP*YTGd"`cGPId6SJ1[-(UUY3+Ul-hd$%%1rBci`6-`0iBpLi0pfK3A8D$)Pf +4rLF8+1rb3035M8i2e6$*IUbEf*9lAA*mE%p!r013!$fmii'TS2D40$P6Y,9!Sh( +3#X[qqV$jhNK-,6[FqqE4rH)eA#VPV64T9e'K(S2a6PBba[jIkTr![KYb@XEQ16i +YS+P9E8kf`'`8j8qfhibIKhPf4U#mB9+rbD$2"Yr,9eSj)0+2j!BcZaa(&C8D5I4 +Q5@jAII4h)I3m[HA@01$53aEU8qC$ZKkN0)`U$RA-m43IH2pll)[pBK(r$`ZU9pE +iUBERi(bFa0kDB!%pG-Q@"HRBbqCVh,+fUSXd3,&1QB,aC&c!Tk@Ic3Zjm[beIb" +ZFKrF&l(ReHbZ"-[Z"'Q@Z[cJfa2ibQZeC`)@N5-AZFlacjR0P2A8XAhfI@E-MD) +HiiX4!cl3Pb#B16VQ5-FeL05Uj9ISMd8@D3#jJrcLRXjm)P""UiNaRK2)FiGdVQC +H&Ld@r@CLTkFk+1AmAh0ZZcl$9,0XQej,i3DS$mK!d[5F`IE19L4MkEA*%#H(MY[ +(-QGD1kHT4B"PVie98)c(kJSabh'Hll8arj+ajKR4D'FHL8GID1Gk'`KeqD!YrUq +R!`$[ElIU6qKp6@!m`kD&b+CFbE3'"dAM9kZG%ZGV,Dk3!&T)C$8619-#SUc81hV +k0!&b9AHmD2-2-eRie#q51R#PUL#0(""Nk0MrAm2Xk@68dH83&FZkA9)VHB&9pj! +!h)[[kJR!5"AUHEpBi,G&U&900lQc&TeFFfNL0b#H*e&Q)hZ9"9aGXK[4f4jr0&Q +8JYQI[J0491fdeNAFT2ITQ9LRS*NFH%a4EiG-hp'5KVTE0jC+fVrrCqZ3!1b'h!6 +jkN#rm0N+*ri-#4Iq'D2Z38TYMrih+A2Q9J0Y4i1UX1Skjj3),L%RF#-8P"0I+ir +KRplYB'T8cZ5KJEMq[+"6GNFIJTj)+[rqUSQYRhAVi141qG6qS"UbFk0%XKA+C*! +!EPA#MY)Q0!,)L40bNZe'Df[@1Er92hd)aQ&8T&Y!a"N6YQ1LGhdJFe![+!2GBE! +R8KRUN@fe@0aH&G-%+EA2Yarbi%mr"ZIJ-'cjl)3k[d"V49@&2"9X+NM9*%VhZZR +hp&Ud(6ANF1m"ZBYaA5!!%[GIeYea*F1U$!I+q3'N5C9XTIGTjZaV4krl1hm@ffl +2N8NT(`#[aG-&-0YQ-Rm2`d`GGjGl'"1AJhqIQK2MEXbR4CIkEJLI#-L@N!"dN[J +kIa2D4&G0)M!Rp,P6mR2K6iqFLU`e'5+mQb1X[r(FSl1krib%L#jlpdc9@DlDl5L +L'refe#+GhiUEqCdE*dmZ5,bRb4'80-+3!+Q0bI3VRiGRbVYiNq4JEjeDVFiDJYR +V"N@16lldY#(X#jCCC1Q1A9RQU%&hSB*Xk%dE9fp`#I5c4$K1S$FjcIVXfF5-R[( +%"2j0hNiS3q3Mcd%Q3-`YP!%0V1c'Z'0'E8QbZLj[(Gq3!*b)f+GE1,j1jR*R5QZ +"I*U'A*2C3I65J*P1bXQab'MPbPLU,LK$"kX60J+1eFr%D3MiPf1pX63d)GH)0LA +$5*0a6eBEA)NDIZF@XBLjX5Y4L!c5LpV0d$3cYUJh*6CY2i#8ai#TELZ+`bIX%(* +#`VNc&U2@FI0)BbE9`5&$kUM!a,VL56LTe"0*MJ!kQ4(SV'SX"9`rbQ[jS51TC(@ +Cee+q!(D#&mQb3KMR%P4SdFApd4e+%@Q$BN**Y0SES@,%f+NGMh"jP`rAIc1b&YL +#3'lAlAL8d+D!bR**[5TlmkhDBF'6#&`N@J+6F+bhcf5q6c*V0GGcGK3Ba2-qFkp +`$V)(rfPX9&V%pSqYB$`CAqcjU3FXRAVDc,eUb@`4+IY5T)Q+hrN6aeKafK"@D"F +kP8aXeQ2N'+S&8ZffCPQ-%iqH'H9UHE5k*c$6iRA6&%rZ9'cEc!UrYmcC'*TArf+ +k-9IZXiF(E6[a*'-`&P@#1`6dhE)P[%GSlQa*NNT0dI5j`lHU,kdHQD$Iq%Q$l%L +*SF-P4!-RG8BdR92-U6*k'LPKYFKQl[Z!",l1k"eJPfb95$VFR&0jXJ'jNP,9M3A +T,J8KNZZ4Kcqc"P@UA6h14LKl"Y4)e0+B#2,-FjiaKh"AekPlS"mf6'AGDMNe&UL +Y6j+BcpbM1MfXM$XiNa9("*d`p8DH*CB#M)D2,$"+"YT1+drmb`9VU@K8(HGd&Yi +H)9+$UYr@E`Bl@F0)I-+'5HJZL05i(LhdD$Gi3EYUfdGR2jc(Y!h$`AZTAH+0!VD +UD)!feNm9ZQ#H"p'VN[#5e-qqmEAdTcE$IUe%5&!&JN,I,eXDP"qPc"'3!(MP-2E +YCIjZf2FFh'#*0-be6$2FKl`ci`dIHeN!*kG2C`b2!1mB&Nm2RPIk)Tji(%$H36d +5bcjr((5[l`qc1V`Bdk@4q*2pF8I$LRTP)6&(Ma)4lbNc2Qbl[iYL+-`Z1(1j$kD +A1ZcST+'f8+C"NhVV041Tb%P6!dm&["'fqTbNDA`Q(GYZ1QMVf[Ye22Z4TK$Ca5[ +C$4efN6GKc-0!!ST-rj!!Lfephmei&beJZMb%%'rVP$J%PVKXkd-pNrUTIV4!3[i +ADPGTiiIKpbZYD"#Rhcrm94Nkc&RkL@,#RAX`)N*ebhT9L-C8*'fX*lRf+M&GL)0 +MSI1"NA+4cbRIF(#ZXPPZ59Qd!NdV+@KZEb1J4)4%92k-)&fF6"*c#B9,eS*E,@C +f,Zc*86pmjJT-@eB29DNbe0A!0kpid'19HC,JK`0p8ed[Z$Bi(e6B6AL3!(!fAkj +bZ,#@N@DG`'Ncm-rhG"3Bd4PT6p!6VCd9S(H16f$d-4Y55L(Q1DY'j5jk4CDS!-Z +D#,*'VUMYKUL$+#`Dl*VT39%%-H,J"CVBMBpJTXd2i6HK88GHfaqBi%CDECIIhm2 +XdB&DT5hUNBrp%D&3DHHf@+JMaI9,$B%+pj,3e1,K2$X&cd0r6Q$5-0P@XibEP!H +p*Jr&T6ia%D`)IHl5e*Z-SK6Cp#h"+jEI0!P86T%C,6ipB%30a'KpB[0cD,GF(mM +LM`-JBVr8RPa&c,3)8cNP(kG8@cMPRICUXG[6m,(Pq62UYrR2P4-$rajNlSGEk8Z +NR9qCl)eL08MPqpV[lMGdpUf0aV[VY@IF5qd%cJM*U!l1"D+I04@+ZBiBT$QSCl4 +biep`Ja4hBeC$ef+p,[8&lh+)1S0@rfMjXV3*5BL,54"I+*Zh6Rhpp*C%V!4+",T ++j#Hcm@q,S-&H3+cIhYE#eCeVTrGUcAl-`qef5F0(P6kRS@kK%(m90'jKdKPPQrj +TbXP4Elh4@%lhreP(l#NQ$(iR8k11EH-l,JcX$`p%YcEULZlheK+&UKphR$j&jJ3 ++V!e'"fC2rJFZB%*%V[FSj[EpAjF8l5@Fb6C*1#FaD1#Q2L8mLb%NrLr!5J$$MMV +4)Y9kYAI%@@66al,cCeq9'`M(hKKq2h#(-*8IUd[Kdr4'MX0!U2Z5I$lrmDqI30m +,9ZBPc861aFY5YA3ZE%*-XJDE)82Bk##%6F6$FhG2#CpX'jEq)pXEq,)BVIU$"kk +liN)fBe$9#[6D31$&6U+4!1aQM)S(e+F[2M%[i[)l6)"p%d()ac`TC8*HU(6V$qk +Zek#C`FF)GKLF2dSFZqcE8@Tej*Z$$&d%@1qlSS3TX+hhQ&FGk!B(8eHR"kUF129 +5pQJem0f99[M1T[K-VX)VX4G+$eak!a6qdE0,EfU0SPbG"h'T1L[UrV$aJl[-CX[ +GU+8+-3![qk1QPUeFHQM8UNp(R1S'l*TaS!K1FFP(ra[Fe2$"RCm9V'f0h%Gjh,E +I3HdF``PN&Z9mJU+HSKFqZf[E9XZ*T,M0ZM9V6FI6VUkh+cXV)!ZB@NMZZ1SAQmk +&rdKHjNMMj$#18qepbdE&@0qr8B"-f+rc")SdNTNpU8dh-aRrG&(rCF)S,1p@UBc +4GJ&FFZlkLHf3!0E(Iq2K+j4ja#VT,HB2Le'EV$G@0hLEpqraJ(d*kI96U@HEKQk +3!+bAY-34!rj6R"P$6DNEY,f"hcaRp#iePIJ0HrC1BQGBBqaTBa"m$XL%dG(6ia[ +f2d*1!-f2jJ*TBL#FEN`1RjdTE,C$B9$9bIYTqDH4$EU8HeiXSNiMDL(M`SC9!PN +KMQpr)'ZpLMVb0fl6G89%mKXpMkVH5icqLR6akKq0pSl[@-L$cRLME1LAEaqH1S' +V5ehZAfDU5-P1dC,`4M55lFpAQ)Ph$PHCrLXBd"8kk`('`Aq@Q[,-564$a9Q0"T- +T1$Ldqflk`C00LK@!Zd'V+,U(Vh'Rab&hK"k@MTkPN9'b9U5i8156,kLGL[6EM[q +9Nq`NPb"V@@c53"ABZ-9kE+*JcS'ZGS8FCHB#Nm9!(@ZAM+H!9cXTAb-D$06X1E+ +2D8EI[q-&L$-[B9@Y`0XVE!KY"9I%k,KDl1+52V516%4KF5Z6$CCe'G+XRL9`fFb +BHbjH*MP10TM0jlXeq)fdQK!X"4kC@V*P2YHXUB&8SD3`NP0iGIrrii`fL)ZaJRG +ie$HZMEZ)6cX@C'jiN!#9K@C$pd5@Bc2DdmMMQ"HmVX#Cq2XU)ScCaYpl-UqjT0L +%b*CdXqdXHaR%Z'jM2!`ZaKU0*NcJml%%)f*!9992hec0Kf5K0-E!RQMG,ja[21i +G!Ji@Z13HQLLqdTQhUkKJdGp"S-(CkK4,EFK%",(JhSD6Y$VC@aYM-IKX0k[cc98 +bZ&[Y0b&B#a3+,"FM,mYe`l`e%Ya',c20%,8ZeFT)'Bmlh")q#NHUI*4fB5FYiNb +D5P'6)3HKrkPN,a@KI(+83eBpU)hEpjr[LR*d2HmcKbV9"RCBEA&bQq"INhd)41A +Gk62b8kCJKPh%@PqH4EY-U@PK`QHiXY(bpQT+iP!%X-9SjmEFaP8YbFrXA$SPEe@ +ef%K3NhI'20[-N45@@b-I$4'DPNrEG-q#4p0KXVR3X3$9q-NN$F3`4hhSeC!!8FC +&F2"0S0j3jaLM*dF##H,Z9#H(e"4MkK1"D5q3!!)L(iN2(p4T$Gr0Ddr9MZDBLZk +lrT`LYpbbrbBiFJ!$VH9kHe5ADm2rpVK,G3F4+E+,P!0!aqDi#1Tq5hm5LDk61)Z +0XEq(GFYBj8BIm%4C,(Z&bXa"FkmK`0FqX(q,LK'q8cm')TZQ)8jY"PlHm9f#aYp +KLTTK3V`G,(5!RPa9@aH"cTeqFZm"2Vciqek[kBdFN!#LG#%qa9F4D%#b8$3IFAj +%3,eT4,0)f10DT`Rk$JG('2*L9++f)k2bd#TR4N[5)@NGlQGm5%EHC9Yd@3AYFQ( +F&Np1@h!II*)EX9)frm0+lQBVX3qIDE%b1*@4YMS2[K#Fb6'F,@a4r!AN,FmAhkA +H[ZCLBCbHCA9pSdC53PpaN`(Ce'TlSE0#U(41G6mEE2SKb@L3!+H`VcX+D%`AG5k +UY3a62,d-`fdIfJhM-@l4@*&3k5P$c8a4%$!hm0,TGVNN*Q+SipDDQ5jMH@ES6`@ +HXL@SFKL0q46rBT1iY2&jk3$XlfaDHZEZEdr5ci+LL&8GlMp"qAICZK3DqF+m(Fj +f-j1-R%T(Y%i%*AX*b6Q+ic9k&D,P3J6e),I[GBhZM*L!,j9ErEJ@Td8r9hACEp% +Sml,q(i&E3@NehpiQ2@K4jDi1D-L3!%M0R1rcQ!lNaJp#kY%Z4S0AU88,hKjPe6# +H)+[1eVHDi&JK&QlLQa4N,LVrraqjmmbTa5RaeEQSD!aek#krNXZ3!2SXae)5P2" +dlhVM+8Q3!"0ZpdMQ)mr8i)*2f'%)S!K$C43lLMYL-TkP1L*p!Gcl*mZ@i!VCP8G +fab-%8KDQ6pd)2#(N-%k`KSV),2EFjXpX*pPR*&#GcL(*f5"DZ@X`cE1%DMUDUMK +B[["-bT'F(&B4"5LV[f0&BjKKmi,(U22aM6A`kM"bcRpMDkdd[iPZNRS16[#$+!q +@3@N1b(r-f9S,f@-*Ul3rY'f[-jQb)Fl3drXi$0[BMQa)8X!+cr%K@0fhi$Bi8%9 +fG(E0Qd-bERQF')R*8+,DKf#HhN9dGrBiX`"$0'Z4'UK)%j-E8-B%N@pqXr+GdZC ++3&LQkZB!,r!eYA200CD8epj*8iCZl5+MICCK$qpfM"jTB8T+ZG08XR8KaBJ1@Z1 +(U"jXhr,)1FR9iqaae!@F[ERfD0fR1P3-G4Cr%hfR,3C,d`qQ4Uf1f,)SJ-8`U@Y +Ua8d#@A#5!MqQbrc0e2XfGd4qX,3#Mq58#qp'!Gl51(LXT42Z@p9(4(JlbFA'3@Z +'+b%!RJl&Urk8pmL))XICJIY54IIVGR&C)e(CCX'4KlSfNUhk4#VAP-rVJQ0Z5T- +VQ$fqjmp'G2h+ZQ["ETlKbABUNFMH[51rJI'J"XFcZX0[J8UXJq`XUiT11"md4I" +3#VC)A8E9@"GSAR@D"VBi11!'4rDirG05l#8VT6+C@`fq4&,2AJjpXb&,i1hrc@F +4cfrZ*9j'F5YYAm58r[Y($@d0PN`bSFhL0@X"Vp@mIEG"j2"ai"rUIIEe3$8r*HZ +cm"6+HXh#eJ(Y@IK@B(-#BY9IGrU0TZQ4!$6eL-+MBIBf0UBp`liV4"ilUc#+%@& +aDX(HEcMA1'NC6JM#Y0C9"Z(A-'T"mU)K@(DUhmjcpfXQR&K*SqIpl*KaQmpLI!B +NX3+aa&`r!c4aTPS`%"qr-&dGf%r,mj1Yc$G#EN6T+fa#03!P$Z(K1&faFb32ELD +QBMBVhBY,lGk(V[6I#q"jm84-JrYCe&B@H)eDCET[&'QU,-V3DJ[6N!#iQQBXGUQ +-,l@T%L,P6ZT-l-%ml@qRp)9mfmCNqpGq$h9e8d[Y(AQKlJd4ii2R@qMJpK+!aRA +$pRfXQI!QfXDJCr('+m@iA9Fi6$iTNpB3-i`Z3$aG"Pf!ZEI2hYjMr"U(eT!!6V( +mIRG$RjNhh`+,VG+Tcm[911JaeVY&!GLihdjTe6Idf$Z4)1rd#b-8qf&a,fh[1M5 +1dC+e2e+kS'5Y1GTp[KC$`9r+5kT'+E+*$c4hi`kP$2Ka1#QJ@A1p3"U%U+GUrC0 +A6TlmP+B2@pRSBi9(hfiie4R+25AqpE0211DSI@q(Dh@CIFm+1(%bBp@L6I"29dI +Yl3m!r-049TYd2d(DErLK,cD"iQqHkYE'ladVAThp5)"jSaCJ)Mhhh2MG3Sm`YS@ +1IfXcRL*aKX0TXN-%ZL6M1AMX3SLk`CRmbNcLT'p6N!$5F@4*XceQ0B!!LdRi0Kr +ZD[d(5M9+rc!TM4P&fa!VYZ)#EUZlQkNGP(YH$S1m6,%6k13"3!+J+4TkT694m50 +LGF)X4P#aceHZIf)")&b'(T0F(L[i6m6jbKKNSr'%Y6$ZBj3L3,fldA)@@(q`Yj' +*PaNZ$5LTRG#cPHSpkKXlpTDPTb6@PM*XXf,iIH08'BBLHT!!N!"Y01-5r@*rE&m +EM'F5VGZpe6mj`#*9GXN0F!3e+Y[D@&-dje3m"@G$-j''4Zj[Y%#MJM$mlLfQ4)Q +pGD"hZa8)8eDaRdrd0d@e(ZfiV))'TG[@![#UrQ65a*!!9BHCQjTAE%Nl[[K%U1$ +#pb%a3hZ5Y@0e`#[*K"C%i#$0J"!fYprri5l9[NU#0Ska1m"*Sm0*mZSFM"&'%&9 +5'`MZFkPVKMQ"B@d88'I+RU4UpaGFTC&"m)C6ZT(Hb+1%i)d%mR23-Uq2AJNaVDC +qrIrbD*PA#8k4`+jJ#AEcZ,jbhCC+U2`@HUhUL-e92BLI11#455Y%JB0,J'-5p+2 +QP'I`j6+'6K$6Tb"85D6,kH@9$YfFE@&ZNHHHCb+VUJEa,,N,A@Zr#QqkMN1T`m% +6N3MJF2aV)aq1KAX1D93R*K+MT)c88(UadS'1Ci"fZ[+U$P"f)##I6``E1PbXmZ2 +SL%)E)!89EVY-&4ahe9+EAcf1ZGA&GCPkbkC[kFQH'Gi0Y+-UJqFY!f&8i8kX[4P +6hc+AIUE&j*U)[[ZKrMR'9m+I*&Rjl9E#q%P4NEkD,8%XXc39UFiKF$d'Ck(rJeQ +4j4ETi[h0L8!EhXj0,KdN[mJbNf!T`Bm9b6*TA*[MZ&J&`H3-[`h6Q,MpC1&Qi9H +lr[PB`0[3XbQ1q29%V$Xh9lbEJL#0U95HZLY1PV+#e)JFiDEG(h*ZXkh`(L%SJG9 +PJ%TfM9`,GIN,b+QScMJSB&dJDj!!Ij+3!)4K2mE`[J&l&#KMf)0FPSMM5T'"bTA +3Bk+VSrmEqRYHhi&`["&FUr+l3MbH"LELKJC(@`1iBKAdHZRP#E$2bd!G(pi-6P$ +YLe3iBq8l1aZjAm"29)[KF-)GR$UP@i`&V*4a05e+KKpBA#JKceG++Z5KT$6'%0- +1dRBIdR)B$*6UIP"Zq!hM%IBT(X%dAF9ZM@X''8abee8RRdpPA8hC&bVS)UJ(0XF +6UIj*FNp*p4YZ*",qYk4'mEN[Qi,DHf!3lV'-CUeQi'9`Z#b(i@P#UaM@c"F'[Si +E6RDEFGlM[kX'e2*,hKf88Sh,N!#l1@Lpp[)*krI$deM8Q-l+)kj8SD1@j*EL5FX +aE3*#D@3!"df),L+fX!IV)MlKJk@k!VMIq4RNQ,,$HF#),*eA!D`+c1Y!dAc2XEl +[AkAerPdi2qM6-G2BBdq-K`)b@9IN0$Tr%9&3bbpk#!+KlaA3k3T@'48b"fAK8'% +8cKpcjVQD@"6f5K5Q(801kR*CIAp-HC!!@Sp(LLJ&DmqiYKAp[ScMTURThi53!,D +3!$fHDViSaMGf!F0cGiF%P'4GbKL+JVka@-eZNRf`#JNT91)I4PakCQ'+hH$HpUA +dNDfA5$$#A3Bme5)%1I1+8S)(qdI51QV10AjIIl1VcEaL6#'8AELdiDiUeR'Dd3P +qMMmm-ZB@khje9&la[M2&LPA63KT(mVhTm!M$P'r4(bVi#[h-Dr-c0U8Ie146A6i +@&j+UaM0kRd3ie6dqil`a!dD`iCqcfj2&iq"4Tk+i0f+3!,aj[mqIbj!!Vp#i"lE +(I&%m"pM,mf6f@1rD50dMHAVKDSS(0,e8,a450JZTHckHGIrH1!8(I1)[-chSpd6 +d,+UZmbUSqSiDMYKkXdf)T(%r#41'QTV4PP)&65-DJ,&p#B(cj+qM'QmGU)FTC84 +%%Qe34QE)MS!"aX1XV@qf29U"8D1[,Qa+KjP[4'R5E5+15E`qDS-B!QDi9459C(! +AqqlAC'VhXmKhk0V+Lc`39rhLRGb)8eR3iUJ1,KEjM5`K)e@D2Um*hkNVhIY[VS9 +A!4b3!2dS`rp1H[b[cQY#k@YI,Sj`L*T#6)QmIf#[h%SKaR-H#KkAAEZlqj!!`63 +VRe*TAEpY0Mh8+$2H[-cc"RBm)2jRC"1b,2a"&CZ")aEfMjF,KC24f8$XJ+PN1E@ +[6Q*c0qX%HacZ81'qZMBH%*(V--RiSA)M2lQc5m8'18G85AKMUHAa%!Ppa!X4AM3 +R0D%5fIbG-CS$2P!BP"S,YECj2aX9q6Rcb,fF%GQ)P0Li*d&Jc8ZMHC!!eVd`be9 +G3fMJ0b'VjNFbr3e45&HBUNjG)jA0hMe3)cG0bd#pciK[ZDq5h8Bc,b!kLAlidB' +96[Q"J"2R[dffhP0lSq0NEHqQTAV$!mr3Ydkk5!LK$@AT6`'QJ-0,!'eAYI"K8qp +%aZbKe$r1fF(``J8rhUmJX)@8EMlL,N5p(NQ3!%maa+Yj049*"C*%0eC3+KUT&IS +%JmT"e![bpc+)HYV9K@6q"Ld'`1jC,XL5@LmGZcA#0%GepD0Q,0@1rb[lIBY%e%A +R!IB6%I8d6A5bNaj#'[PSM6Y1Y$-l5a9M6LFF!0IBIf1HaQE4RNSb'X3p0G3DqSe +@IE22VMUd)'XFE&U12f%S9Q$GURZ9`FqcY[#`!bCrL[B$pbM[XlPh4S'3!$V2c33 +E4I08RR%JQe4j+Zp5iU$Fr$h`5*fFIaf9d,Hk@e*4"-68L9P)GrBr6)ff3dfJ+%D +KD8X1*0&qc,V9UBbDT!JY914J5)C$qm5$1R&klE-&&%32,d&kpSV-!q$r3QDIdV" +FR!rVJ*c*VUpIjLh!ZFcb*)1jl$1c(5K$2m5aEhG@4JlcDX@YfUeq$1b$P$S5UfQ +B-pSD([6fUjj`#d,5K&f2#$3C&!j33RGB*48)6bJ$B(L63Y")0hdN"adU'a"bb$G +3H#+V56AYR6kVERKX-iq0@Mq+6MqQ@bl8mUc[[!Lc+BC3qEF6Y5EYiUL$F)bLT'- +)ChkRc5KE3`2hGfpV6qNXkHN-bepe'))[,B(`e[S4pR3H3kXSBRPk"!,!q"plem( +G(qPcj!18P*rl80-Zd&JFL9XEJ5Ybl41JjAj5l)'b31L#eM-@+qU5NCqeA4I1QD! +L3b-B%42dHkTCQk63ml&TPQ)S`I4b"VGQ3Ql#`9hQDbURYShP(Mm9&+BmXkfZ90* +UVrRrNkJY@*&JDVQh4FT9fp[hPcaUbF(50SEc125'5L&pCY#PN!3"!!"#!"#i)p` +!Z*iA&`!!(DB!!+m+!*!$cJ!5FK8!$Srq!!!ip!#3"!m!9'Y-D@*bBA*TCA-Zci! +ZH'eX!!(`Le4&@&4$9dP&!3$rN!3!N!U!!*!*!CS!N!0T!*!%$`"#`G5+Fdi)FiI +[%!&,i2SlF)k&dU!8b[Ak-G[IFMe+Q-f3!-Emf&(([2ab"S-QlI48kGFC2Y*dUkN +@)4fE!'(FHZ)"L6'Q*GT-@hhRL*qJ*`&B9L'FN9CmIM@+X(ZL$iaHh%[#69+d-Gl +!3X(8KJ&4pJl+aVH"d5UJiT@Njq414")RUCM02S`KA%"RmPJh-e4KrYIcVGfq2AZ +%YET[$NdbQb%L05K1VQf(V"#&jSHM#E@5#36JlGTk(ard#)$X-,C`q'NhqAY[h5P ++@K[bH5qUclX,IFc*E'RZ$r,p-X*LEXf3!-3mDi,''eK35+19ib`ll9Flk6m(D@j +Kq,4(DR(9LPDR@EdD*Q`RiTY)rfpHA1$M2lZeJfp+Xb+lS@48B(#c[pS1N4eF[(G +!b#Dj$-eJTcmTLGfZ6F6D5%)md`#8c$&0F%4C1hQN9a'16qe'"pH%BbGDXVrMQ8V +SZQQqh+)a#%(ERNF"ffe$2(da4T4f2R$DJL@6A2d[mMH$!p68I!*48FN56fe$iN1 +LM9dAa+,3Dd&#aH4FEICe%P)DBGK+`3RGp@KS!+j59LNei&P"Ii1$9JDLKLrDI4P +$r*fX%k&@jY%Y)#&SPVGVk(A1LHmCHd0HjF)mbD22dDhL#FG(K2VC1p%2!)CK%GQ +qPAqpJ*!!2N`Z##A8,%PNRiNe!A,U'`deF@VF#Uhl6+-V+r*pq8lLfa4k8#YaJUM +P,CGhrCrQ0h*l!DR2d&hT*5Ar'#IQrclT$F3YVr&MCHkV#4J*`%+"R@$5ZLqR%HS +6-GABYqRM*mqcPGJ&cdPRcXm1[cXK+MVbX6YKj#VSefed@q'dEJQRi"T`$%,ILJf +RTUfc"%HGVq$@bM`C%l4'`&C+jke!-Hm"rlb02K*Fc+G9`pU(K)G+Q%qdiQ82Y'2 +5S`UU0Ybp(N-RbpH(kY'r$Kre-Dc[0lUe%S1@FXJGI-AQj"hpr53i%AaU&QMGqk@ +YZ("8HaNc6,6q9m,K6'$ZbX-"9d+HJ*DY1T`0a1-K61jNViT6bbmrTN0MEG9jl&Q +I)I6Gh8F&J6P4b$!4LqRIa*`@e'9U6CpEfETI)6k"F*9%d"N#QJpkMbN808V(9"8 ++E!fmaeBc98i'eJI,"HEl"2haf-AV6K#PP[F-9k+iqfEY4'dalN&%299)hP'#D"C +E*d6k-!G&UJHHYrr5k`m,mGK#(h$L99Y'l`@md&Kc[H$!bra(rAS5IMF6dVPSIY) +rpK3,8MdDD0&Sl#Q%rDe6532!Qe+i(%VIX2HN46-d`X%a($&!VA@4r@JBBfSddVM +0DlQBTH[Feq1Af5VH!U%G4RE286%%+$5KPaB!28NUX!D5@3U-AJNGFC*,5G1TlZA +C)bkHMG&1aD%0R'"X#RRCqZRGE!4CfmGq!%&1Q(XHUZVHDpeMJ-AcKheQiq%!4YE +SJ!-08DYlHUJaL"Aqd8bS%N1U'jh2rrCp6rc-arP4T'GC1eT3%l!&F#(U8ZV,hXE +'5i(iPi4D5dJXbSfYDPrFC2rRD(dH0R-2D1e%lSdA9eqVprE*b0-25KSSJIcB`&4 +c-a`jlR+M+6(ZAH5fJULR*mM(qlLFGV,Z@+3`&QDpF5c2pT03[8e4PR55N['H6a1 +Z6+hCG-$#YkJ@ETKhbPdS@f,CjpZ)Tm,Q*Q&*J[*T6C!!N!"M(8$Tk%p'TNfV02V +PM@+UkfSj[P8ae%+'aN+cmX3`p4RaMCVQYAdr4@RmLC)2'C!!9U-6%8B)dJj0e8+ +Q2iGfV3EUHESKaiS%)1ZF$JY&IHI25ejA[C%ZqlQ0(Y$jS9Z$NE"bBJTD'RZaP3& +Q[LA#DL-'JY@QUYiKe4ic@jrXI20&5YmjBd5hR"S"CTR*6UmC)c-G)Y9,4P`-9qA +%3$keNPI"R55mZ-c0cDmCUlqL`Bf)E#PQ[L`(#9aRRU'V4Kkh&IbJV,GjV$ASa'k +qcB(S@l5J6D9R*4ka0%&pV#qab4iJ1FV*Bf39NC'LqmCEVCD%lCrBBD3%(S*e(!B +![cFZ@X(XG@Z83fDLE`GNr95`[i5dUh&pFVIdj!V[QhUaZr(DYR6GRim(mF(#)1" +h'S6H#DV$"4Na8I"[i)cl$b@T2Qh'*b@2i#l5YqH0q#p+pXSiKCpiGS18cDdMUPi +'9b"E)8JRAae&F,TBKi[L0M6CdAG[VbZ2jR8-R-!lNFJ+2KIHjTi6&j,'-Jhb&Le +Q'TkS9PdVZ8EXm[[PlHD@bcZGNI'Y#[!a[mSbrY!55T!!590P"dMX@f&DEl(X%cd +dDGZ8QYSS2'hr"k$8[1baLSHc%pYBlKKh1dMc`khBhQCT)[GBF#)3GUqR4P+6A3G +IPXidp(0,["HT%ZikpY!2,-c!hBqUlBTV"!Gr[$U+6peYUG+LL5BH'9hPbGar$1( +fZURlaP")GlG+DKBqh9N)[lmqq-+#phf(HZBZKY)8CQkYM35h[mG@hGh5p`29e)- +fb+rprhb#jK)JbD$-$I6HFUfp3UQk8$lUq[5jk%EKK[3!3FmibM`N5AfGSVE4iq- +eISel1HCik9U,AQ"RXe-1%R$"'PZ1D[e,&imN59F%&p%ZY[(85,eHqf#fYlblVN[ +S4p#L@$qjf+4jZYAj5E@JffdJBC1[@@(Efd8UCZBRZ)Z,"bI"K3N!MF8#)-q#"AT +MlqJml@dUpIRZC(hR,AiET%q*CNA`m55JE-DJT,b`TIrG1K&aN!!SYH2ZfaDH-+5 +`JDF"ij!!mIGA%XRTrRUBB%ALXcpGcapNF4G@`4fcc$dlmZ2Bi&NZhb[E+1llZ&4 +i#FH#RZqRN!!XmLRe2#XAlmNiDX4B9VYM%SlUQJiPNleEica"85A#4k[R)Jk"Qh3 +N0(d8*h(0U1P%4MXC9rUGKLM'M,dfMQh1F*'A@iY1f$#(ACANHl&S&Mb-B0fZZk6 +)(Z`C('4,V5aLj1f2,)0U6SiK$CV#BRB1$Jdp'[I"rQD2$EP*9ReD5&eKL$)XLTd +MdDH`ri5B@f546!Tjq8"'fJSFK-j+0h#FeMNbURi2M$J4+h-@T&ZKBDl%+c+iXQ& +(cIF-2P[-Shr'-YlM($69X'bC0P-lkbUad[([3Ql3Yb'cAaF[XNe2')!qe,SK(5M +),K,!TNBbKVriSbL2H4VD(Tjb4SSRHa5N9)9m)13jhc$K6L+PATadH#dKQ"B2@[E +GKAp$6k5)@G3Y#XG6NiUbN!$A0&jJ"Fe!!8JfXrDI[%2qNZ*EfQ-ETKA6&q5P-+j +d3jKcRfN5GjaC%Ad@6C&TirTr0CNEjQL#FH%&Jq8b&2CH0('4EeDLa([MPBMe95l +UkR0qFGDb6I1UQX!hAPe)TiGN4b'T66k%(mG9%AiI%165(N-[&`%RV(61&IM,$DV +aXk14#5hR*Gh*f`@9h#P5+c#A-*SrPfG&UF(f`!(Dp+$`d$IbP'@!L`M6U&P4C4% +0J`#kkrT,[9JSJKldJd%JbLUD8XbIX[3&%`-)301YqFT#1c0!+(8q44MC@"-AL-% +DH9aBkpp$lp@,rb1Yaf6mAU+*ReY0#J!,3kZmA6`-C0ib)`rpjId#8$a#r[K$kb+ +%j8i6)8NKX[GS56a9L1mFH0$`,bSNYXa0HP-9qR3j@Rp@R1(qQ!Vc0VY03b`FS9i +S@((I6d-9eE1(f"DFb#$SRRM&IZhcQ`DEeRhX-VZemV"hA98T*1ND6iT0Tbl5hlS +5`+N#b15D)'@)C5AC(aT[2hF4D9Ih)h3%2*K'CHX[CAF33f#USeKC05lZP9Ei`Dm +(*`0"i@2rHLHaY`B,9JUGpCm"2fkF,#V4@NfLCc0PYUK#&rBU(lCN2RITPNRqNrJ +6D'M&HfEf!HCmaql1&U)dD-Ei$p9majCmLLC52*!!k,[ZamN0(jA9kG0ZrM"d)56 +Jr)MEXB+*4*[TiMije-XH@qkN4NPeALVE6JE1d0X&1R&HZ'4A3cjjX-VM3DF!h4M +3+$RScc(L4i`D9@8)&3q@h613!*(6fKa+9-(V#5qU$hT8iaSFhPfikkZSX52DT60 +J&RUK'4N(C'&SXD"Q5k5V'6Fbjk*2$jrFGKR4qpcDGSCTL`Ch&aLHb+jfa$4H)f5 +cA!85N!!qRHCDfp%ErEElhRDfLlJrqAS))clJcL2HFC(4Y,q6C)FYMIhH["+h0NF +MSh`i2A9VBa*M5d*%Lh$F2fE2E-C8IK1rmIIl9[4dM,*GUek&pZYaFE&$qpICaJG +D+&#C'4hTHL$TBqD*Zc+!lLR,&rBamV#PmJed#V0KQP%lEq2'c2'1-$FREkadHm` +H$Ek'aNa2Ya#YTH9P*`,p2qf"C(KdBQ"-8VchUF*ALI,qe5S[4-L6c%e!CpE$FGP +N-1SFS"*cMM4,l1IFZ+AjXq,)9jImMpIR2(5B%*3CmkE@`-`p1Xq`N!!'S(pNPJ3 +R-NRl+'56HUD!R3-[V00MekFKfl,TLRQQ)mimfUcc3XJA6LPj3C@HC'4#SpL$G8k +H`Zc!1PkLTL4mH"H1Z1(QNI8UE5U'!##RrDP*5qk(,#JNH4+c2dBa5S9(-b$iqdI +EJl4N`CCIhlCaM@Cee8hmXX[(P)MQHq+*#+Fb(jiGGhqrKK5jdEN&4(jffZ3%aLb +d1PV85XJSTpf'c"&R`4"B1KbG5A!'rmZ)ZG#jd0(dc%)U@#AD`,,K(ZfE$lVKP(Z +%$-PP%Hed#N6h&!MS53%VE69-q0U08%pRrlfMYIhRKHL9$$&aTkI,$`4L2XN2l5" +4L0[-[*j"0FE%RMJ9G#D@MB-pelABSKIqhSSRpZh6L#5PNhS+qKS36Jd)URUY@4Y +GE)2eL!kJH`0Z'D%RAPFZ,MZfXa`Eb$6H(#iLUrpG'JD`*q-i8$jQU[YYk@-+&c9 +(2KEY#!%GkC553HL2[X![Lb+i#`IYkVY5$Jfi3QeL4)X5[f[6'c1AT49$qhrpR33 +T+Ze409RcFe6`Giqqp#I*V!EUQ"505#2TR2qQ$GHTI#0T6b0l6eD64lcLRFJNL5* +d0L!ThHEFSq6*[K2R(FYaSTAC+d5KcDjG(Q2!e'S,P3SiJV+9ccQHp41'$%2+h%1 +qTT'3!1PP#JFr(35dA(94&HT+R22)p!LS)akA[3VF2Dai&3Jhd!QR2N$D+cF)#[# +jUAbRS3h2YSc+"%i[3[+8K'b1m,mM'd[Xd"dbY,85V$ec*Ef+Fq95DKUXYXa5p$P +mA9X10E(GddF+6(+jfE#jZ)Z)eiR55IG*@10E`jQhrN'mFVkDcdGZ2P6B8k6l8F" +5JZ"F%l4H6QL%"#04983U5CaNq5GaP6`)d@llp#'b*'pKd69Mcj,HLrNrXkH-M2Q +#E8)3(L*Q#E2'1@XH@JPc1X3Pj`4YTfc#4BDDDq9"C%X&a+FLrQ'&H9JN3UXM4+R +j0pal5dUJQ4QV&*9iT'KQqM)PhcQY5aYDd5H$QSPB%pe+-!%d6DrK4D@C&lqdQj[ +J16$)P6!9IVajq0hF%5,(lDRZYZ6[(Gjf['4EVS"N@eD##Qb`rUbDU(A0DN@dLRC +8LD4)Qk*(G)3E+B*3jER8X'PSpSEhK%*Ul&iK)pLYTRA8iqE$"Z,1aDBcJG4&jCh +'dEcL,ck*2ESC+P6-Kfam6Vkhbj%#)%Z0#j6dqeb-9fTamcVZp%"QZbRLNEidGr- +N'8bR%4)+QJA!Hm!0-2j,QhTr(iXdkCC)h'fAPl0VDbmb08bfdR#U69im9l'L!R2 +jF2G6$(GH&Bm6"mB-VBXGl+)qFdP(Bc'8*&RmJc4V8(+B2j5&[021Vq3X*rm'P0& +JcbcC5!A[90r$jrY!`%@Y6"L,qUMMR0q)T0Ep)(9Tc&X*Ua(M#KL"ar-HmYPb-dp +Q%SU[kAikHRd3%'VajSL'Q4UfK@iQ@@2AlI4f%STL2$K-,McDVpNUqT&Eeb6TD+9 +@2KjG6LkX&VNKr$I9GajPf2B,9XU68aEV8hUCDG(iq*e9mRh&Nj@qbT4biV2"R&Q +HF@MPH%@[Jik[`[Mie9[kSCRq33'ZFE2ZKqPVH(I4+44eQ8fGP1L3!jeVMQ0hPS` +&2fS53!IKUKir$PL0%6hP&iAe(eKBm3@f@lAh4pU58HkD@5,6Ca(V)fmKB(Xc3%- +5Hk'82feS@FY%F01S-F"b'+c[C6fY!h1$H1feZi2blQ)c#FFhHV*XQ3jh%APXZ+Z +KM-"jLEl23EfS&ha5fV*1L%dclB@G%F+$+"d6f,8iG1'DN!!'jR+JZk$miINQ*&2 +qi0Z55K)JTEc!325Y'm+%,+d6*h2%bB"3V9lDSIaH8k+3!-*YA8KRl!UMYm'9b`E +iDd$ZrHT#qY[BSQeBL5be$$N418d)*1TkrbU2#3lJ"1k"S8"@Rk'rXiCXrjaK"GP +jCjGRPTD[+m9fJ3+Il[&VrSUmp)LC+'S8&H*Qiq*a+IHB"ld58&r"Q%p0rNf+GIZ +Fa(QeLGel1PN,*1PIU3#-V5d6!Hk%k[(2$&[42,9EG4eTZKa65@BDATXcHc`TFdE +&K*CGhK#R&%S3QZZc`Q`DqB#UDEm`5-Jjeq*lb,4`[cjXr`#bc-34i-GKG1!,M@G +"ijCIjEU[PZZDCL3I(C011!a`d*1$5I@Tif"&HV"M%!@$3mNYk9Cb)Cf"K@B2[ZJ +DfD*&G'#$FbrbZP5ZIhU5&'bbqD"&A$%ZDdKh,C-MA519lLlpBaU+1bmCpjZp%F, +iF@41LNbA!ZQSc,TSCCdb4#kAi&0El$0bKbS6DL6hHP8MfN&C"F%09BLYE86Xjlr +1h)()(ElLqfYY-i%$ia,"51ePUjCYA@Dmem`#hCd4f$GZmG`H+`SVZ5U&Q4+Klcl +mILX3e9dlri9FP@qK,J-+H8Kj`'bZpf"TiT!!j[S3L$T*[)9XPJBVk3%,"+FDrcb +4'8+X`&QTk@V&JD3eI[6,13(Y!6(%I**5IQma8eG*Q5"Edbr(+NE4"1$GNclSBUq +2A%m0Y5r2&VfDEir&G99bp)YEJ[EcXkL`E+jAIKq#CAZe%AQ`2+CamcrNCBT3B0$ +FU8e,*@DfM2SM8lP`%*U5#dKbj@B@faQ%F!iepKe39jP!b,j4TQpAL)+hTH*E#6Z +B#SRijE,3D`YfBSdE@N`TbDR@I9IEl$!CQi12XIYTN!"GNR3a[8%JCSDEHhNj,Na +i-0(L6fkcI)r+A8Y4kDX6G9MAY),HSDZS0i)d)r[hdQ-cPS+"I41UCkcffp,B0h" +mc6"9h!VrIZS%jF--DfRrV6@k$!l6V$E#,Upd-3#BaA9%,R1C&8,CDB`TAe!4pCq +p"$E,18&4NVU`(Xh%0C%K'`LeTm&"r(*&Z!NZa)+&E`Q0Q$B!D*`S9PUbf!+)V0d +bQfN)%rmFE!$Kc6dTC5LRD8`32q%4$+Tc0E+5@RE#%U','Qe+9e()bKdLGif(B!L +6MGCVNQNYLK8'MpFQ,JjCqZ44d+iII&QkCjGkaFB)HS)h!mSJiN1&rb3MfaV+[m" +2!cKra*rJ)%bJSi!6Zjj4Z&2Vp#9daNF#ESM3Pl2VkI)&VV,J)8CZr$Kk9*ZjV8k +065$%i,Rh*rEZbV$NqjGX0Z3A*3&LLZ%AP+cSSi96hBDjJH66N6Vmp$piVR)T2%9 +3G()Y+-4RTf%MZ*r)dlLZ#+0@!K6C#$PqHVTGC`ZNGZ`Tf&,bB+0Y2M`VDp3"MSa +"NfaLM2+Y*M"FDIAG28DE#,AQC2SJMq%%Pi*m9EEr"),ZKP&aYK`qha2#6514NLG +c3dQJf2Rp$V#5JLlPN[9HX(F)jqAM$ir++%c[10BRV9EZerZ5dj5qq6dSjT,jf+@ +MVYdVPAUJ&CdAU6LT6bY4$G'`r0j&ChGRiXcLM9S-0KZJK+qecFJkNa&SrLFZG4) +SjL*KT)A&&,5[AC5hl4Rc8Lie!82)p)!C,5*S*`%rr&NALLlT'GH5Sp$jbM02%)8 +M[%JiYe98E#JDV"NL1#J9ND89fX@kRdd&0Qfkh#Smq9Bil06PEMeSB&T-L&1H+bF +dM$VBjFLqbXJ6#eRQ!'-12MG+VIGGGlqfaG0!RrXGl,U(l8lU85m#8&a$0kASiSq ++!p,YX5(&&VK+1P[m'p!FdXd0rXEPL3b5i6l+I0a&@%&eY8dX593bk%UATbUDK3A +C$+'T)p%j`YpRBJMT3+AXbH@C1Ml@bXI)Q6JTK)KQ6hSe%-Ujb&`chR*3K%BVfrf +Qp-,2c5F+NHqb98mRl#+VVdi4)*m@8eQV4aP1P`EpT`h'Y%a+TNUMXLYK[JR(TLc +@%KrE@9r15YIM(*+UlXcG$Bk2(prQe*GHGVfUr1"qAmG"*"QKVp%!Na,'!GYSjS9 +$dTl5[N##h&+ARqqQ*fFSH3'BBrZrhhqf4B4l`B(0KC%CYd(%!Ge-jPbai2H!hZm +DlY$p%$ZU0@ZUP&M9T0lc0,&NN!!'YbP+XI",#QFGjmT$J&K+Q(E$C93hTf'S2D@ +GKTFlTm3*""Vf29&LrXH%4,E5bKppFY$08*H5h@1#K)D#k)Y*3Ur`(fPDc$Rp*@f +UIh)cQJ'3!*rM9&hV)8H"!CE'Ue#c%*Xh+iU@c9e`'TL,QEYh`!a4KQ`2@5pl3GB +DY0AG95ZVJIPSVpSmd&r8kTQCddkNbcD@c@1jHDD@UJLL"Y8Kq6Imfd`%YC,1*+M +eb*NVYES2&mmpq6-SQ6Mj,DfilM"2ILb5[5XN,9"QcTFPQS3ljC!!lmUCSI(#)N9 +90JX#q0bhY@BbJ1RJD&mp$4A'S(DM1`bfVIeqAh`I0S"JRE*qX)e%6,GMQ#KcdAb +2AB0Jp9EUeVeEiMeqrplmfA5PP9I"AJkce""2rifmKp2E9j6hY8T2mKfii6"QE00 +L6cPZD`0N,NQ9!fVYdQXb(h0qc%A2Q&46K6!jX9i,ibF`e*kY,F@[2kq9SdYr6S( +FR-9ecCrP$++4+YCh,jX9IhVKQXr0CHIr11Z6N!![#'IY*j)H2,"Zm[`rk$")X4I +,*Z,0GfS-p&4F'm4ZUm"+Qp*-GS25F*-&"mjQh%I+B6KFUpa(J"$)Sq9VN!"NlZI +lQEjNC`e3!5k5#!KSeRdLXcd3E5R'33iiJ1CSD(I[j,*h,5jH[Q-&"(E!,rAVJ*e +Bh@I2I#[G2!9)AShiFCT9Ea2Cj0MjYVVFlHfU!#(lq!Km*QL@+CV*G2!NI[UEZF$ +F0MFk1c9%!hcffQ!a8fkcE$pZ%FFPl"FjAl%X*f+8[rTQ2m%bi*qb-"[#@hd[%h2 +DMELeR,UGSSQipZ@)8L`Aj+M5XmX"X2-"CpKPI1`#(EMr)e9JT`0dJ$9ET5"CJCG +H!I[880lN2,qfj0fc,NH9$-&RTmhbKLla(kcAI&iflZ,9JbGNTI#VQi(f`PHE@'1 +HUbAKSR!aalk9TLqcbpB-PYifI*PbHJfA%&eCU-Y$,hj*i6j,)0`4U42AU,Ajmb3 +RaEDL9#S(BX3!f*U+PflTkGL95eAAEAMMD!'"56@a$c[Vp,r"'L*8acq[dV+)*Ne +lrZ'[a,9fXDS8IIfa&[TfGT)HbAlINIC!*RD@)31a!hdhmpm32YU%LlbNeE59`CI +VNGPPkG+*i9P8N[jp!m#K%X[kqPbSH6521k(f8PG3R`-)421,X4#8,Zj0)EB3QjB +SN@K'RE1Bdl`#$&-5FKRCp@C,B+drm5c0YiL3!'am[VMC(dJj2lT(SU!P+%hLQGR +-d*!!SP`XaF8,h(`QcdRfd(d0,C&IK(,JN50fR-e1Y"eTA)@"#`UqmP1pd81$X,V +!2EJ,LfA`KpD!h@d95riC#[8YA5rZ5rZYLbA"GF@ZIrE5FNGE'HZFf"`I%Fri"D! +[rVSFfN@1!d`D5GPm8#RjRQ!X`*Pc(SYehcjX$kqlMhj1F+@#((Uk3"5Z+ZFG,9T +Kj-'11hTPaIiPKVGSb))j+[LH[0B@KNE&dAqU,+b+JZ)ddrV1PGSCN!!N`"+5m-6 +'V9j%S*fRLD+hak&QiEPC"`2-ipCB8bBM@hKUXN90(S"eT!%QV[Dp(H5$BP6)Dlq ++U+R*%Z0cJNJ([jIG36S9pH(-!E5c9N58P06'4,Z6,XKCM+2pfK(H@,Z2@M@`[(c +Y@*3f''Q,(LNPJXGq0JCYH-'9N!$lKNE#Sc%QZEiaaH$PC&cY#H(3VIQVdGZI%qQ +*RR1cE(Dp&q#BN5&I86a#0K0'$EJ&rSIIFqhJMZ2Q6Tipl2S*I!6aDkT5*a4jqB% ++[Ni)h&cre6PJ119Zl4P#9ID-*DS0+`ZBX!p0PP5-LYeSkKj66"a!&6Ad#HMeYa+ +EaAcG9UUTe2h%'021$&D,Nr-E2-cNMR0!EHd204j2$CVrpk-ri`lLS4BB$-"dZiT +N4+DHq(c0%8#hI9ZCkj9`#4Vj86AGRcPDUIj,F9jhVdQXJ&K*33,UD'(B1'kY&LE +LH[SDP[([#M'6C%S&Jmi,+Ra#S#!kTb(LaFV"&F#C-S9R+Idq21DD-,-c`8'1`ei +[kG5NFHq3!-M3D5%%TUH6lLaHGG&ImS[k(,5j2BGM'MG'6T86#8YfK&E!5iS`QmY +6)Z0UR-i5,9+CNX*@G!VZXCNDM9C*#e2l`Q0LeSSdCk#8KRCL[GP%jA#DUXacQ%- +@@i[i43"51ij"*LHIV3PRq2%8b-DELp3JV44B26U,YcZXM*-m3Y3Z&Fmk5cf8d4j +fMbAVVE$Sf36c#6SS`f2X*8Y(cC-XPBM'-B%cThS,0rEPZB@TJmXdK!2UHBLX)*J +pSMB9GS!Kd42Ydr2fTBD&'eqTQDK#Z9bl&5cbU(H6&FV2(lA#qlhR#!2m9j&Im#m +6VHCQB15bZ5#%2caj9P-8d*%5[(r9&KcI)6Er&c0ij&iE)X0J+2e,-i9HAcUD+Ja +Mc41kF$'$Z[d*QC8(ZkVG-UEbPi@D"1Z4iC*VZU(-j4hBD,$@)ACJJUP-JqQThBV ++[kBC%05!!F+Lek8K8RZC9E%1j@D9ZJHUG&9k+YMp4)FRN[,JAIJjd&NKrb`0Lrk +Td2Ba&e6QHMJi*P&V%m8U`Lpd(9XH[jCar-"i,AQ5Z('3!-AqJpArM"M5D8ml1DT +-$A4*ba6!%i!TXpAf$HM-S06p%J1R11'L$l*AC@BakUdH523LhD)fEXR5&*p[aRC +F1P3,C14@'1di3A&J"3M`XN[Ld*CETle9J'l2N!!)Zm3bJNYimeEGRijJQIe1b2k +L*(C-KXL[MejhBJZe#e@3!(-5SMTd-4ch"Q"1GNQCa@3i&bm94rd2Gke)LP"9e'Q +U8%N3VD$Li$lMpS9Gr""!daE`%6r0f%k&"KZA38mrLI'Y'kVFE*+DjTVRR++-+C' +0409cSAmSR5P4flCP,'hPk"maSH1&+mLS*`6B*h%q@5Ea+"GadbAY0T05j`+j9Ca +J%6P&8P"eQd,rIUZ$@el46[[#HF-P)@(PeaJMBP1Z'!N+dbra()Be*X98F)0c#63 +NX'JPe"0R(hKM-l9GrN9LGUKcpk`fN!$54jR'lhqfRD)P"p(4-6%*#Z+091@M-IX +2ET+dU6+*j-fKA)J*Jm"`PSlT-!3dDL8UemUY'HGhJlq&#NeTXiP-YFE#Q0$H!YB +YfcHI69+k(D,e'"Ka`#`$%!KiTM5Gd4RbAZXpqk&a2))jjMLGiAYI6qm8jGjV8+K +DDS!eCFd3i9*4'Ubif4p3fq[X-mjp%('l`eI*P3R)hMe1N!!`&lVNUq"+XRb`9lT +V$,@*3HF(RXM(jPm$(mYSPJ-(Ud2ekL"VPhHrqR51Kql$cAZ&S(PdAXNM+hqe%+8 +MQ2-"0)X4%Y#i4`Q!f++5dJD'TChijNf3!-2pQr0TMq!rX8KSIP'3!",9"d&#PRN +C',fbi+6pV-'9cS(ICNIf'3"`jP*q+"SQ*X#BE9R",CXT86$Ifph2NcYc%d@E'kN +4plS@ELX2P96528de)YG5C2F@!J#3!"HX-#NVGLP%RrGLe5!C-HI@'3dA-`Q'9J- +UlX%-#EP0F`dmMT6HEe1P%J4jACLFTjK+&"G59rb9@l*Lfk+90a##SD-fU0VUKLf +Y![eG5G3p%b8ilZ'e*81"2*'f3GH$+jR9dRYdS"@ab-4Tl9kYGSe"@RlVV-RQd%" +NG,+rCjcj5m-HJYREEFZrC9'QpNprCS0'R3re8-4rLI6C-R%CDYF*3)"FI`TDchG +@4kGD8IBj2f9',cbG3P8#8"pad5!D['d&mL3+N@$(ZEZ3!'"1e3N0MN+bMM#IkkI +3+2#&Qa)HKBZ4Y*Rmbf,L4ZaGUBA4Rd+"1C%+j+YLGTQ,rZ6Fe5acpI6AXa)4&$* +R#`)hR[TD&Jq#,#lPDhmDdFdM%+EQF"9T&1mfL8H@c00@1ML8HGLrJaUKrXUPKdD +8QAb!qFMrL`P-DL61$AfQYCbI0i&hc!#6`%*IhbBEIlIJ1i1kJGDiN!#L&@8'@F- +Rp-VXJC!!i8Xp)LArUCrCJe%@5N-3Dp(5CZ!,Y6aI*4ZK(TLkb!kXl0[3Zp!JiTZ +m3eAFp8@hS1-fBeK&)!HJHr5*+CV[f*eK))F"-Zr94XQ8Hk2PMfZ`"+hGpfI#'k, +qZ`FiE36P+D@UErM-J1,IFCNSpk+@9QbS+Vq'D(%mFBVd"#UhC2iKA0Qe&C)M+YC +F9RM23D4VU%,PJ$cZS)8952qr6dcC+TUXf'k#!IL4$&rl"*`B0K))@3B+N!"PGaF +fVPYXI"Zb!,UF@f0r&l"8!r`I+RIl1N5AX[T2*CqeJQf@b8)SUiM8"fkJQKHhm-1 +PK&BDL!NNR5m'F#p8i#3-QI)lef&ePJ3(paE2jMfc3R6d9HNE@pK51ZiB(HFjE(S +c))EIB1#K2,#a4,`L0SZk(lalRE2%HU+9mc9eXX&NS)lSH&`JUF`L,&Vm`$bP'QE +&Speb1VKZ0hZEkJ)5@lerbrV40ijd*AdIGVC`pN-h`c`r$%T190fb5UlmT'R09a! +Zcqc+BHel-YYU-#3F`DR*T[4k6LMe!%&Q8Ek0CLRfNB,I-"b0j%r,`+EhKA0Q3"k +#800j[Xk0Rid%&4h5UK!KZ+Gf6QUSjKL9'*YAmHaCbq&X-T6-0Z#i%(SGr[,R"Cf +@,p1p"DeV!UCqj21CmXim%[)14Zmc)L43q(!hAA!KJ-!E$X"3LeYF1NR(8(3H3DE +KdMG[!4qcMCUl+6d0Jf0rD!8N+,)j#,Gi+r@E5Fi3l4eMX%r")(*5#"5&KHD(p)& +8UjXY39'UTX3PL6m'&&@P+q`jJ)K1A9R,fMAr(qYMJS86pT!!1,6EddC#Kef1mA@ +iLXcUP$3Hi)%R20eYQVYlB30Z@(r0XpbJ3bR2LXIYT'2mb%K"akB$a"jL)Y*hrYI +$lc(-q+p&H-1qGKXiYCAK(T9(iAG21r")BrrYNei-rf(jK-lmDY8(U$rkl,RiRQc +9%'5p%5D(3N-5diIX)rM*Hbql6%V5`r3melfP$-R$qSNJ!j)[5C3-+BlSN@D"kHM +[8[K*'52%&,2STLQdacLapAVYMrRb5q3JQQRE+NPL"C0p")j[P$kMQV69#r+L"hB +mQQ[B@YAPhpKdrJ"l403cpq*qbX6`@+lNY$HVe&VDAVXVbAl'*dl2!A0`eDTk"() +*$2BT0eAlNeR2aJcHVNP@Q+rNEK(EiM)eHC+2Cpl&STr+h2CmB&`jSiRE%9$%)G' +"fQ)K@mE5p0LlZ%Y(X25P!f2'KeEVbAjHe#BqR-+4FqM3T'-3Ha5X&"r&I[C@j92 +ZjGp66cUkhi8qEJM5Z)5F!0ih32+@AqBLNiVcUb0`+YD-0#eZ+)'mG5"i-9Z!VKa +[I-Jr%iPkMSpePde(0Dd5F11[a!cS2R'MmUeQpFFDU@JHpj5DBIRC0D[!1F*LjS) +8!Kh,Lk3%8`M-%djMbLjl[()dFT2dYAAp#ih,dBIe0ekYJr0"R!S93"YlR21II-q +LfSCh-V!TEIDpB21ih[GidrA-H@L)HS4Hp[ISrQY2Vqfl8$J)Q('F-J9N2Zal[@a +fpqiI$KkCrAK2ZA+)*a4Y*3FL4SA``qj03*CLa!X8mXVdl@G4*N1`)-TSTri9'R8 +"i6JTA5G3MLqK!rM$d,P`laUF1fd@l)&"L3,IE&)DF'CKrR'U*hRQ2#*jff3GF2S +b9N!`i3hl0qkaYE+q2S[%kZ1'+FTdMVArCRXb6YH+X0-pmU&fNUNE$3TT63QpVL* +L%9'9,T@GaP[ALAEZ3IMMe%ck94qNY5L"TkF8dLHf)MAHm)N3bF2c828MSf#cQ%F +qF4SV0VrCm@cTbH#9hFdRN!"bDThXQ@CIL(11IqL,+Cjjh-EjHAB5VHdIbGTc%GT +jiTr-bN$mCc(HpR$B1i3UT1Pi9iQ6kH2RMF0rT9@&jqd@UHIP6$d4&l'-d(XKE!N +P*5TfALpbJ5`jJi#8cjeF+,2"!&pL!l#Kf@)*JE2*QUmQT)IE1l&fibSi"-*p"b4 +XJN9p"0"LRR-J#Xl`Qihc!LAAiP@9M+h9CTc#1e"-8i)&EFJZ'lAY+(!h3Z1(#H) +Xf5)4&!Z%,Jri3$fjKf0C6@'S'j`)ZJMP0Jf23-hq432G*Zc+**5dSA0KZZC3-M! +CBB+e0KJ)Ph"8Ajh0M24hqjNBNpBXhkSjRb-N"*!!ic#FpAK5-D(Ge36-ZHrVB3$ +@0''Q2dUD+)f6NdIfm"CTAS*JSDYVV`K+"ZSYle8daplbH6I+iYQlfE!dr+0abmL +2KfM'-#KTZ#E)8i$'+$RS*MG-`80V2&811$"YILfTmR&9Dd'Z5h2'22V0ddk3!*+ +@c8@jp`lE4c$[9Z2GPm,kGe@R3"qI6bdNiBLGV@$,'4D6MT642'-%K!5PdkS*hV3 +PlNbm![qP8B9kVP[8Zl19B9k*6XCM25i5jZH+0mc2-XfZbqP'#FRjcT)[*X[4SUU +a1(c+5$E`cXGe9Ba&'ik+LBi!8ake1MrCp"JFG$B"ceN!"PM6c-FA*(crGNb5jTD +PjYDR(eU)V8YHa4E"Iq"6KJ(,r'5#DXNkN!!Nlm`Hq[AY3Qh,d$5-kMd)AeEjd49 +(HfIK&5jC41G$CH16)S+,KHq$BbC85mXp4C)&!1()MP8&ZJUPpRSRH1m6B&aGC3@ +"((EZBUG35fEXhi(1bh1Ad-hldrAR2k$Ne+$EEVC%3TVkfCdI$2R"BV($@QdY98X +[5)"dNM@PQl#GY+S0rRR`UmBUA9RX-9[Eq5cLDZfe,69!)+C`3l[BX2&K+iI,(mj +ie[(cHVra`4cD$FL8KSr55UFN3TBZUq@UFdVMd9B@QHLd$XJ1'[!XIcAm"NFd0fD +YBLMb&'1p(Ef@)cH"6q@-H0mDTr%rR5UV%&M@0pM`J$M1!D9kR)MJ-C@E63GM["j +A6*-,RP8Ak`eHei`,iBD1bcA4AEi(Nka&8aB'L@k@U3[G4he384!Ji%%bRNfj,hB +AMNjC'GV&&dDFra@Xk8-("1l,)c5N4rV[44(ZIP#R%Xe!E8#01Uk6Y"fKKE82B$4 +T5`DN%+NMHDH`X(#Hk5SL6DqH+HF2#4Hhm@(Cl(kV(HY'PZ+8#iahF*+#DjFd(b5 +92@Mer15STaEkHpL)%65b#jRX(Sqb&bcJmA2jRZEPQHM3&NB,KY1P2pK6Zrr1KMG +05-#ZS'rmd)4d3Q-FVl!BecGKlSq12P%r"BXeTFS3RGl-ZPAMQ88h`0TC[FYX@'B +%R69q&@VijqpIh&aZa+l0SYpXZjbZET03`Sfdrq5bih8L6HZlpSmi[dLkieZD+c# +5dFd5P+%@D+[HU"Jqh8mSr0[d3hP'&[8`45S)`2kE!GI!ifSr'(&I6'9CN!!$-4V +pXU8X&Qc8c&eQDk"hh$eSrDA*%L69jBdcdk2rVKUP,3U)S0FNih1Xe&"#%3e8D,p +i&!VU@V&3aHp,Q4(DqN'b%j,PI2keV`Ri*9HZLSaU(25KA%MKb$'2KT29T@"5XS1 +8@FG239kPS*2VQi"@E#163AHAiQD)aJ$&efU[DEYVQ63+DqUeb(k'M$0I#Ek9E&` +5p%5S'QiXh*GTVX,*bpTk$XThm3b5!89lfmmQmm26N!"#H$PX`$VB4V4Q)&JZmKF +h83K4j82jF@dEq+*fb'kDqE,#VTF1K0#DGk(L5fMc%F)Y%4d&i2,K(4rP`CT2a5r +03lh"DHcV&fliiFrf6ULQ`5EE,SM8C2CCdf6C['am4+i+mabGmE(*p*bTk3`"6P$ +26b+5eCKa3MFkqrr-'NN!hVrl[8he#BiA'LDfe@JA2Q*fQCAdM4NZTS!2jh0dDP2 +Al#*lj-l,eHK1I&2d,8d6hmqDEGRXc)C9BIc16F*&@TAlpN+ESaKlr,L-CpD926c +R(I&hI&+$B*Iapq$FpCMa-6*bmA0mfeR4aHFA$0N"h3T'J&HPChUX*(iR90(`,kY +f&m*MYII"`Jq)"%%fZ!-i2p99HFTNhGVP4#2&(-B[-J)A[AP"Ef'Ne$A`d3`,3Q@ +&qhTeFk3pGVII#kZqmk4bm"HB#fB4addjibT@AIU-JdpDYP"Y'NA[CCF3kJLbC3q ++)i-XH*02&Sd'C$U"ac%eX8kC2ReFMc(fEpS22YhbNk$VN!"I9a*Up!E,HCNI@35 +kAjSh,kEIcCihD*3Uf,-6QQC6CJADCMm'q'*$C&2%"-X`Jm`eh"1YLE,f5I@Me(1 +Yh@kLBrFbQ"2P-+NqVbPVFhATP2!mm`U"2[l'AZfHNNG-IKQqTd`Iq5S3JICEZA% +,*4UkNHV)q1CF"r[rFcQGlCVFPKEHqUGap(05`VJq[5!rX43pH,"&iTkGKNm+pFG +,a*hKJMUj)EirN!!i[5bV"jr52mTbC%)5-klIaRP"LUrj1hZTlrNSIpF!m,(qk'p +BMjMMNUp5F"km9!dCE6G)%V%p`4[&YcUechFZXkQVk`bQ'KB@hic%S'qr)D%2!KD ++,[NHR8Vr1Z-AdSH95VGSC&NQ(*SH!,`8,rXDSr8LVF*#DpcYAb#iFR[&Xp"#5&L +)@,HYQbH(Gl6hmYLik(T*5L#!Fem%&8--eK`e8YbK-06rKfTl`iN@38&VFB308bM +$j@mC[UTe0XGU`%RK1PC52#Q#ImPk)CN2P-@&eUL%V(Qr,M%8#S'QQ1)NRrhb@4A +K&j3X*(`,F-"'6&U,3K0*GrUADpABk8aZRP$FCIjL,VPQp*cr&i5mjp6i-dhqL[$ +r!*6mp4AkXmQqPDD**Lm6i,5a)jlhU68c`X+8@YJLUZE2hP`1TL*UIr@3!-RT%hD +GYT&PCPQH6+4XM,CHd!X#G'@4BEThNJddcN!qcGed&4VfqBC&I8DE9!8NIH(Ckb8 +0J%LHc@6GAkQ'k5B%5JSkie*6$M9U4c-j63fM%ZVBl$MjFd35-Z3FGrcbm6hld[* +#,BhpZ+i"T(N,&l'DjZ3A,Z5FY&1#hcT&#"&JBIkcp[@1m(%+KM0,Hj%4kek[HXj +P`%"k%lrZ3+%15#BhBHHlNmILTYFmj6Vp3h!-jDB$CZbJLm,5jah$dG'kEbl1,I3 +SaF0#CIPMkAi+KhHqGllP"[C"92iAD0()i%Udl2flV'[(M&JJe2,hYNj%92dfhkQ +Tl-DBZ0[QdEZ%k@B(KmK)%ZCVQPAV2Se4qK!DR#UAZRDGelT&eTdqQh$TVHDQTqN +hXZIi3&9YI@SaVU0'd9Hhbr`$VkiKcJPP&C'#UXTU`1*pHJENr!PVV4$ppY)K3LQ +,La8DHdAZ4jP5SZb*Kq48!Ef@$jI1ME)01!EBrbDl$e2ja(CSkU8SaejCNLQ8kS# +BdYHKZjV"'j26Y9fRP&Uh4#54a@c"c5e$VH9JJfDG(+43jU1r!VmA'1[DL%#6I6f +jH6DRHmN896"Vh(NGBLYIf5a%`eC1QGdD82Jb'*Qj+"Pk[T!!,09#e2IXR`m!'GJ +'p-!T9$rjU8)Vr&NAq14k'NGQZ+r51A3KHcY'Ic3krj%k4BM0L&T$[K6SLciGjk% +4PeI5kV3#90b9YXCfJ3kXiMYCk1lLHdY@KG9"B&hU#dha#5@4pX[H6-#0`5aS9P@ +i0$q10"JERMLGRTi(h)d$+4kL6D+MQ,l(*M2M@SREF(m%lFle)+Q)4"-49[,fQ!T +4dAFh,GcUh-NKHfeX('liZTZV#L02qYlVfFRBPHM@)0,j,-DjLXp)GG4q8BJ9HkZ +q5eDh&2DkeC-0'I0!JM'ic6&9VQV(M[Gf@@I#Z(ijbmC2YlPE5iq!)rHT$l@r(TG +hN!$K0&q14Caha8i2MM$9*YN0mhe4jM,A[,F'Qd(krlG&NIXBdKEQbh2D`[QBHmC +mh%eF`ZjhDpR0IS"M8RM8ZUi)8A!a5Fb8'YT@9[E['TR84p[*q-"q*RXF91TI`0X +[*BED9R!M%TDZ9T2+@6m0D$`0kQ3$59DpI5`d&%m6KYXBUKJKS5NALkmRq#Z4QKX +H8C'kJIbeTh8rS%TY@AZ`#'B#Z6-J'Hp*m91I6+P1[(V&0Um63-c3dVTJ)RpGXDq +R9`hiL42(026EKk)dBCk-+p(5SC-SX,Jda5VIl`QJ*JL$G6l[%'5F0Era%!Li&TN +@[#X)cl1XXQDeG+4DeJIM5hF-da-ejc1UEk1&4*!!!91jUY,p63kQTUl[P6)"em! +UEaX%h+Xm43!&alEddASp,I"IGR3@Z&,BM30Vlm8N)LU4VGP&$!+Xr(eeVcDiJq1 +MFEjS5mRc"C`3NHd8PeTY"G8hlBb5INFN)GG(1Y@+'IDPa0"pcAZM8bkh-&e9(f4 +!$h*6aPD!RYr%PIjGScI8BY[Bk1XV-F3"Y-[43'cGrpN6bbMk*`H2@0%j&%hCL#0 +EENpQ1@KH-NG"!D$ZlP4eL)X0D)#h`2d3""9+V%Xp")5)GcCTJSLkCXaZe-cBme% +$%F@TL@hdGllq5aKVmA'A-T-emS(@-#kraQd2Gh&08L3cEIk'#T8ZG2@YC%hI5"Q +bL5Ck4VV2!5+S$@(VHDZ#FZ-S[jSl5L-e,df-#*!!mLfKh#,hAp1V)8`3Q4,V!)N +QLPf4A(l%4lZ!#fSJ8[J0"@drAHS+9PUJeTMS0jUrR,lB!"4KPJlXIKPS2"D%5HQ +5k@VHp)(I(@i$bEPG@Im*35)V-JrTR(6*&le"6'$,`reQBD!UP)lHHAmLa*@p*%H +-bS3H@hrSr#c@,5-h'-9BM!"-JUq$Mqp!QK&YNV-rea$M!c86C+Ah*fXZ1Eh,2jc +A(qZ-A)$#ZRl$DBF6D1L9c[Z&mZ$`dc'$&qJd9Y#Cbp#EX)ZEa0-qra6*e)1HH`0 +[b!bkJHYpaPBfRdjKTJYGMcA'$!9XYk15RbS[5p5IJ&)Acmh*1H*(,ZJDIX5UIj0 +Ce!Z%NeGAXAN*kM#+MeJ(ZQ3J&0Qe2*%UZ6TbYBq6ri!(Pdbq$J#!)!r0ZfHp)Q6 +MU%[SMhiUP0)biBM%%LGQNA00$)CFZ)h&3#Ja,BGXFTDi*Ti`h4raT&96QS0PI(S +"3#&ZQ%8SeXaLjC(JINe*U28RFpbQC["03rr+rr!ZK8p#2l8EIT&CB&iG+j@Z"K9 +C#XZHaAihMEPam8acX((*LIQd%mb-r4DKG!I'0AB,%Gci#ad*k6dTaAi`r5ZSXTf +U-@"mpZ1BT'@*Y8j2Y$[#`NKT2ScIpJE,kTfRZSk,@YD@6p5a9Rla$#*Vm`)Zbla +%5Fq(!jq!F#45,D,[Z'QKMMS%CC&mQCET,G1fckf0e5k#l[i*kp5kh`l'U+TF*$q +3!1!pN3)lFUcYj#$Ra4hUSS*`4XmF%HFVJ54YL)Mj5G`F#l6NSJV-X"8Pl+'c(bk +SPY@X&&b(JViFS,2YSqA8`JHlm`#'6!F#LcaE2pa-%"A*1)'@652m'Ma%IV5Bl+f +*-bAXQB'%`FIB`9H+d0AF#GS53DrkKcej5XG[fMN,VI(iS*VrAm!mpbp[pN2ch$6 +59&XFj2PE%F8f4UfK#f+AP)Q(cFXVpY,$J32NKaGTA*ULTL%p2300ZG93XX#PN!3 +"!!!l!)#dSNd[Yl'dI`!!G6N!!3$F!*!$cJ!,5r8!"mFk!!"4F`#3"!m!9'Y6D'9 +XE(-Zci!!!%#b68e3FN0A588"!2q3"!#3#S"`!*!'3X(8L#ff)S$m6EUH,rkT-ZK +Z*0G%`0YV,P+pT-#I)P*H3NY--N(I,I(SC*Zi$a[liHG4iD!a'X*,R&ecKS8SK,i +9(qJQbK&CPI$M!C9B,f$l0M8(RKbAI(M1BMhIBUS6B9PJF8r`10BMC6XErj[-YTE +Hm$fMLP++4m6Z6GN4ZQGl8+hflZl1,6D@ac@le1K3'X0XXSq(@1,cQ-)0,YiMP2J +fB5A,%MaH9T!!c-D+H-8IpcmKLN++UDLQGH#*eSJc)VpEFXG-AHcZ)!h(6Zm2QQ% +X+M0i&CR"NAdm&Z-rIeQ'Ih$ZQkr+6j+Qq[UH6RU4A@cQbp1426MJJS`($E"&BfJ +a9Z'a,!k2dJ6VL,T*1"qeH#NE'X-hE,*02JRl80ff%l",VcEbKAKGUf&K0-L89YC +!8i0'SNkZ34)J(l2'JSb#9GJK4a1bUfCB8P3#"[Mj[2YdjdFlVA$@'Ccl4+(9j@R +43QhBTAm*V2($Uq,T!DSXVclq'@E))EG&&SHQ61H)cGEC*ENl&SYqiAU!0&INZh# +E-E6QJ5m*@6fLAH,AK"F#CrX*f#PPECm)b4HAIPfFG-1P1q,J98I*-BJQFC&DDei +NF)&G!+p0lXhr#MSH%BBr65),"@Ik[fdL,,)jIK0VfMZY8m3I"l0aXV+CYM30Hl% +hVCQA'a'JX6+G9V6eUcmj%$68FBj(k"B,R,YHXGIXKebE"LeCI%bX$UYH",'5cd# +$-CH&a+i"4DU1(lf@@kMCIHHI541f3cZTC[#,lQBFT"C9GZiA!4J@F+i[I-6rm+$ +m"E'6aLqF5+6F['2eeB"#(A8MY3-YKbI3hM`aLPrIJ58"'+hl"5!1TfPl@SY&&N& +6U!)@1jrELT!!lLqD+`9ACfGl8%VddBIPeESq8TQ1rJ8KI*m9#m(5mM3l)32+N!# +,IRGa,2m&L*[LcJ$EkPqqFp9e1&2jZhV3THISZ,B(1,f`8Bqd@1JIVcN$XYeRi$d +hBBpK'E)hVJ$@&"1f5Rjh+bT%"")ILCT0bG*q9F3!%X-(Sli-#9m23SQYPF%YJR! +8*6PAA)9q9REY6)Ue"TT9Y8CZefNbZ0E*C@pcTrUY[l'%r#mjrp[F%)0P!f-pPp- +"HMDd8fPb#4+6dZVXL!KRT%8`#kfGh5l&q8*mUQk($03TVc'CGR3PGjL@!k""F3m +i!4J0Z"*rc!HLYi,X&`cRS5c[mUJaIdBQaA4,pb&c`5fFX@HQI#-CK#'T`D%9M*m +bGqNrrCe`"QVrMVL4((((+iUG*8"TH,Ybjc`lBC9Icf"UT+2K4SF!ZI@4Lpl02"8 +j*CS`2d!R'XN-@2U"ReEYN!!,ipjdR[)Z5YQB,c6P0Mj'N!$D&+6`a#k*pr,Z$rk +U$3THpS*+2KK%LHbJe+-Er[Tb@b-V'(#r+Q$$9k[rT4a"piq@hAiZHeSP1,X8[#% +ImH(iG6,Nh6KK3RYG,E(j@+Lh)*i@K0q[!ileX$5D%JiKME4AIQKDLjL#[6DX95L +cUhN0heKdib4e$F(BaeaA#5%I6LDV`2rC,l(V-UC3ehQP*Sm-9DYC!SN"@l%6iai +@J$kDchSK*kid$mAeD)SNjL*+b2hN[kr8%N-(2b#3!)&H%"M2iD)1Z$(6!aII[`! +,U2!(p1BLiUj6e!E0ChN2P,P51Ik5@+iRHEYL),-@Z[qK8Mqkk[f9J'R`(+$C-XY +,Xf1JEqQc(jBjdJ8bKXNTm$2G#pRAGYGSqmm(-TI-KXS&$T%ha&alm2Gi4M6MceJ +9UH[a!GrVBKk25CfGfh36aALIYb5r*djAZ)hFEfcQlrjh%Xl3YST@Y-!938'm'A) +a%#mTVJllK$dc`5UIeRNb9HNF['`lBp&K*RH8$&H(&,L))r%e3*r+NHdfb%SDFqJ +XIEbk%+eH5dH,IlB#D&9Q)b$Yp60Ql+825AMfU(iIPDE+'bF`"VNrBjAD!SAAMd5 +N6T'dS'Hr-8'Q4cGI#`6V+aNa+(['k,L'fN2P,(fY)j'CVhAGUPlLKH3LJ3Fr+hV +ILLmm'IY$'D6bKB5e4dLTrfIr6#$kf-[dB6UR&+&#Id!h"S14)i4%"&Ffh@K`IDq +l'R`Dj0X@UQ38[IlM3H"-`LKHG$KlJY1fDm1F+#Uj+8`aL!#TH1P(a6m8eC6cj!J +rVV)TiC6ClE1mIpf#LJY$!HL'15JbM3!1Ujkr[*YhC$V2lQ8&9*A[a"Uk&1!SpfM +RH8p0ZL5Xk%8(Q3Rca(I1Ep[PjZ1`RmCN#ZYkEVJ2QMITj%!iIdda[1qYX44NR,r +,GDKSGB`jL$C[)C[@VbLU5kH2B)%b*Rli)kYplCT`"2fR5URJ0(Lj50qqJ#A`[!$ +VpS(8$R*8(P)&Aa6'm1ND%1lb+NS6MAI`Bp!)beCc#b@$3h)ai`2!NQrr0JJ684$ +,)E%-X1YhRHj+U"feJ3(R!IV9,fRf1,rFA0BkKFmGSI,ABfVX'a3G0aa#`k@iVV% +FpVeX5EE"X%R%5m[j61GBD!6r8b9BQM%qrP#eBNiH-SErJbT"hXqHF*E["@G2qb) +qNpUij-,Z`GRdc*aShr*q6q)$iN6GTHR0hdmp0BJdp6e&[N"6!XFMk!2RHf(lXBL +3!,IS4PHIJ"RR,,M9KTrCl+h3)+-N'N+K2Jc$'5F9"*S*3#PKC)pPCMRF9D2q#2c +j*EMYpKdD*mXheBh"+%D2kNq5@@JRJ"E+UT!!jq@H3b@IUZ6A'8Pqe)TB`G$r#1Y +[+(VI"'#Hc[#de&[@8jf#Jiim[kUJ@[06MG'$Y*kqpm`l+GqkKV!9-6C9bjmTK-D +l8G9Xf"'cJhBUIY4QhSS+c2-bP[Nd'KQF*'4DpBbVP+'4DL%arZ`lVr&+V"&b+62 +-eXGF-Z5"RdD5(+cEc"1*!63,-0#P"(@XjYS3[!PU(a4%BF,qYqq0e-jqVjYlBG$ +1$S*9IeE,i(3qf#$CRiH@+B66aFpXG0QT81,'JpNdrl5KBi)lM3#BLR`!k0I*KK* +jF*B&dZFZFpcCJUVS)jJ8KkRQKH8Qc"YIqk`I0J2dU%dkYNk'VZ!%"V[D5YRjI,B +M)MTce@mE$*)D,TS6bJFGLpafbI(dQT'&jPq!B1"eS5#3!+CDS*'J*E04P-f'VGr +2-$V$`("b4QJaE@JLhk`kHJDq*iGX0GN*rK!&YB'@"Q(4ASH$C"'p$bGLRl2'fEf +*2Kfe*ZNPE3YLdQ'Q-J(bN4@rYV,hFPEajp#qXZ*YM)*hAmZLN602VZ,cT%&9B9+ +fc$pVpL8XA@5JrSDrJAZ#fQi4hGq`+-iUlMcr%4M&EiU,j-AE)F%CQ2EL@rcr%"H +$jYe"'+QCq["'hfk2+31*fqNRhr,!TXjcphc)fI`qb"LaZmm(Y$f(r"4,5F2AI8L +QAZmd3[p,p!$qLXH'dqK9BYNmA#`K26)`Ge,6!A+l(!K,jSk`6rp"qadJ6J`+1-b +p)jkDf%MF'l"`[Tm-em+"J3%6XS2`+Z(U5TADb'Ef-9L'ZfJ(40'5Kp'a%P*89P2 +$J&4eY[JL'F!l1fKkK2S2r+f,G8cPc'Rer&K[$-T6Y#PYjp2H@M)'mSCLR9LdhYZ +mUXMbS8qJDYALE@m%G`IFeHcY@mD3!"CR'!!!KQ&1#NTR5-Lm+eaH5)@PT3RGrq8 +S$HVkUJKpeM$Pm`%B(+%Ec*+'hC69KadJRF)I@CJY3FALBpP%KQRBeSCmPTpV#bL +f6VK!M&X8"d5e1"9+Y5q3!2VZ$Acj9j4Y*)QA4Y)A4!1ijbZSaB)ZeX(d25r"JVq +m6kB"5dLr&IefYQhJlXUa3f61b-S9F@6R6d(&mX@HkRiI6RbYbPj4HPUqB0&-6bL +&dAbhXf-+dS(e&U9*bk-8r2C*Rc4mckKqK+#0P*+9`81hUI4`pG[-GHkVhd#9#2" ++-eTS#cH[U&[FHIFFGbrYScDG9'FF)`rldV3D4bBRP,AibUXBVXcmTS,V,a*kD#- +D04PI8!l(rMRaNb303&0LH-CqX5+%JNjd`piA+c3[b--AA9"BGFBpHpGK3qdGrHQ +@l*!$D+U2L$m0)&CV"N1Y5qP8fHXbi#IE5I(+-G*FkNF&1149m*cd#cTlP20Hb,G +))I(j%hiT%SV`JbHFTFqd*8Br[M8A)l-rHI6RY-Ahiadc09q3!,EZp5+`HVKQd2r +3(Njmr*f+RkK%4dRh)QXYfZriXkN,)B&0mJM82Eb-jIjV4[QEPM1")Gc&3@D0i5# +&SEir#)-HLpmbLBqI[Jk'$$&md4(SqiEb+9BJHpFD0@0jr@CkX@5LMD2-NF("`jK +CS0mF45DSrjD-BLYq38QMiX+ZL(Y9RT!!id&%)'AlS),CX0Mrr!kPSRLA!&Er*R( +""S39XM0V*1Tr-&h%*6G&51@TG-9kP592,c[MPE8UpXjJJ*h-B$K#Mm$S2d,q+IJ +#T2V2&%J9TEH8Bc3qK9&ZHH#'1lCB2Lkf6SG*&eUbXqF$SIaPa@#Ib#HPMY)6QXF +`[0F[El5k&'$FdNQ($+D$CT+rFqH`[,)!R1Y$@#*Q0I6dMUlJ5-%NC!*(M#UE'MF +5G6+$4l29aG-dr,EZfNUCK8HdB"*!bYpP+*eQ3qjeUrmfD+,#c!JEYph)U`,V)$H ++$I6$TbZSp!i9V''&ZL%HKT8L"a['lfUSN!18V0(1&l965!kk"mHm+9KE%!TfAV# +#$,9G9[Cl4i#DU$Q0l*P+hl@L)jAheQ"Bem,B3XGZQAGA6'"U!@1%hEeZVLc)C4L +"cDa11@e$(B#5bjS[lrd`-fc,I24ch3*U9re(SD'q'lCSG$Aej'Ge3b''aADjr#N +0lf+E2XD#Z@c$9rm)0Vi)P&-#rPKq3S(12P0Tq$8`$IhL6fAI[LXKi55ijb12Llq +f0BXFj`Kj#c8dUE5f0R$hSjfbSPUi@6*L6NXh!-0Emj6-ZfD"UAd([!f(`TZeHM` +P)JIe*%X"N!"9U*,6*j3GHA'h'"i-f9i(UCdrV(!SE0#5""Gmma2@ILhNb'bDrBq +&6L8[EK-Hd'K4mTDlYeh#C2h()XXf60R-)FahVVe--XfBKB`h)dbVGfd9kQqBHqP +MjSQ6KS1@XhFiA*E)-kLPEI+)-FeAq)P$,"L`BP'XhAf3!2bKe-QC$4"8)1C24R$ +5KDj0"Jl"bPGH!6$[4[AYRdbA@d0-q+A55d#J+l!@qT!!,"'Um'I%m92h6Jb%Gfk +2d()b(1c9eY#($K'@Y*(4p-C3&H#Z"*,*lLi8*J)Cf(DmP*iBS@@"#SAT*S[qY4F +3rqU$!miA2Xa*A%hYbE(U!0MZ`00`h8%GM%V5bFcSPEX"4X"bf,i1[YPkN!$`Cq" +fSfH"MV"(Eqq0jYm$ApV!A(kQ6S#U5GV,NL%ff4dG-Y)*F-"Z!@iHKbXJ1d8R8k& +0ZBA6jB*5`CqFS(DCSIRVZ"MbM$RSeZ*Xf9NdKbAMHGD'leqe2iCKSl`)cf&dTj1 +XAU1C`[KB,Fqfk,J"jf!G&[IM-K'*G!**9UCSm@PcpMI,Z"$"C)*hd3+lQVYE3X` +ZE+MD9m8TH)'MpkJEbDX[CaK3$-EJlDQ*BU1862l0eQV"h#a2QfT#,lHC%4230MV +'[!'4Z%'NHUc4eBr&F,`+$+Kq[MhESCJ+ilm$2Ui8aI!"Fk6c`)JTDb2V84*8b!l +NJ%h9@(KRcp5cFU2kapcB&K2jXqik)P![I4`TiUm@UVCFm`(XP8C5l+Y&d"R4Hd% +5j6mp`p+8)J&a%lpJ2q9,fk(LfeGMSqKk[A5`0UJ6eDNm%%"UV@0Th8,Xc0qB1N2 +TANE)'R`P%ar0V'SZelAe'YlKf4YpYUkHS!rei0eaPSAI*$kb#(c4iLA`U,Y%lH- +@SF9@-2Q-BhLl%A"PijRjrhNZDP%``CNCjA"1rIB(rfDk3[QCDlEAa`#m'K!3Caf +&iL$"*DCX%3@-kPr,ZH34,qUK6(FY#f''FaKA+2`+6d(E"F@TH(6HUAfq*@Rai)U +5[0L@C1r5ZAbLIT%8EJf+hVm@(!6%`@hJ90'e,X56S%RCbD3#dbcicV2bD-l!0ij +5BAp8hGee"Iq[V--'#!D91CVIR#&`@eNLFFTKA(`KZ4kQh&pCVkbpRP@#$j0CTa9 +34E$Y3r+l`9&)GlS*,U!N&L'!9QQ05Qc(,DjHA%(LhkVrM1NR#XKH0#fGIF4akq% +ipSGV(r-qM%qii#4PFI`G4m#YmRAkP05j(S2N`NApm[A5JVMGI8SX*DBKZYDk$qk +(&9-rBeC-j0fXiPm'-"B%'$q"P8dGiLMRVDJjEPXS*qT4qA@+c#Q4e0UABR##AqB +DAS-)%acQia!mMd2EZ*8dI`DdJ'Nd-61FAdH*!A4Hc"5-@8KV2,Z&q+3bmm8*lXi +`K,1&X+kTqrK#&XJAY(X1ETQJj@33R8,'mK$U)S4e(R#Z8QV81r1LLmD`I3KQ)SG +rC@ddR#+D"eR9GJL,a%6Cq4d&D1#rkRZGZ"ZRi2`clFX6F[#!%SP5C`Kb'j'Lh#% +`59,Hr9lRJ13*IRZ)H%lYje6Ab&XJC)[1$A-ENraX$mV&*CBMLMbTmL"P4Vc@3cH +K26TiCYebJQN(0398e*&Y"VT'#q+XAMPE3`K#abC``*+[0(9A1HFhQr,b)[1Xj-T +bZh5J$,mbP[VcAljmGB3'&Z-pJ)m'RKPY$"Afj4&Z2(NHU2P[Z&NM(dA$!kC622H +3!)Zrmi6'Z64E-LTVmaS`Rk,YQmP#0d1YMBYLXmCp`B19@rG3$NhGf41#E!+e@[6 ++mi[PI2b#S111VDdJB$T9ZQ*TDI&h`I`XN!$"3Ia53LmqNfId3`5eSFm0%F-`%B& +BQd'Tc@IN%MkKIGb4+Kl#NT1qi-ZkCE0-c6C,MX+$fC&VVN(-%I[*9N&+*EGRX[& +iBcl`*6VVp0DiZGA++rRhikUBpL#YY,rc9eREk8YR#cf,QT3KG4G+C4$aLKPRVUI +i--J&98pfrhDRp5hPB@jNkj2YE8IGU,3JXdJA[aNE@D@ik+%cj&lL%qPN#&X)2UF +YThGFci*Rl!MAAa$'$EPM'%*qAdGM@q&AN!#`F&pbXiT!di9SZ2UhjBJP5GNM#EP +L@ATP&h%"&d31iZ(HmC+VP&&VEm1l5q[c+Aj3l(6PJ8jM16U$G"'6Q9TPcRP6c6j +Ha,(r+V')cLh(AZcNAJD1P&2h&%-85Yh,@2MCSLA3J5mY*J[T1-jIc#U988KG8eA +ch5G0Id#2Y0`i*S@a6Y!SJSUUT,"'VfSE,A5(i@[!JGP6%9K25!N'l$a58kr%$Nl +AFFE9EGi!m6X9hT)lL(!,,3LTZR2+FImam3kd"h5&4h@2R,lcfJZ,GGaXQb$8L`Q +bQEMeRFM1M[h-&L'T0X98EZ2-p6DCS$p2kd)mjQi@m$)N)m0[XRiK,&1%"L#mqlN +STp#UQT6#(GXaR'FYib[S-X&NY*f(lFA*2DI3r@f6fS@iSNaaL)hpp-M$h3h+804 +QMaI6@UK%%BF#*&QQMl#V`H1j[fA6aL%T(,SCkR%RQLD(kUVQ"U$L*4Lm1ERRr#V +pUh[8VBAh)+T8VeKqemIL@rD+VKbIDQaGijCr'rPicCYTR[P#C0VXb-LPKUe%-DB +3[A9MC[S1-CUX+"Q[L2m[IqZ0e2i&ZEYdCBl1h@C[f*qe4I%fRG#S%8`[DIh6CF! +aG`RZ8D)d%)QpE,@G*"834aTHhFH&0[N@@%FeCNlaNUA+,ERfh'@(a9[SeNB*%%' +bI&0,"IZMb0""BF5%5KVre,C#G4dLdH&2mTQfm(((d)KUBEK,r'0p+8YE@&DMl-1 +j6#,HH(,iP`*hEe&DVV@#jpKqpJS[6i`Y#)'6[0C+0UXT9%%5TS[4Y#h+,K1GF@m +4qhk+!EYqa3#[ZQFKqakF!ml*6m0@Ge[XMR%i0&6U85T&dlVlG5V(3r@0T@ZU1"p +d$#f`ak'ERE86(@IQV&DQb6Y%FV6mD@`kZ4Y!a2"cD&PHY)!`"pD@d5"AA`'DmFZ +9%D(V19C[p4R6JjRGEQJA,j!!VRkhKQ4-ADHiAFSEqAK2V4r)I,'A"9cDRcqVMl3 +T$AkLTA"5SdZX+ITL5['9#JjQi$($6K(Cpm@)EQh'j9I#h(#f*HKNAXIA0Dfq"Gi +`I&13!('U`TmVq+raUpc,+,,1"SDICkKfCL0R&6Sii6EV("MLbe@#Sq5fMkRFB*Q +$PBmK0&p`3D9E`3A3f$Ckl"j1386Zqe03AIMST$D'5%Q5@ZMcUYb19pTi'6IQKf, +hb1a3RQ9rk(de3ZSL84C5+6@kU3mfJfTdk,NJP-cef64QLqIGNCd'BYl54h%T'c5 +F-3LPEHGe4dHl8'NV#8P%Nf`AN!!T',3YAKEq9h*bRHYTl%aYC(E)-DK2)V'-J-` +a9[(`bi4Mk'RDL+B1"'b0iUQ#KSpae[ARIDI@e9pQSJ5$aVcjCS#S%@bS'@EJd9d +USG8+hMEQ+Gm$#5VUYIm4X0b9f-3XNJNmq%(#0B9-,0UT$L,eVpbIVFhGcZYHmb% +8@l4Y))BfR"p-HG&f&*!!IH)8FmU`bD*56C5I4mEEX$h'dZ@LLPbZR!abjrIeSJ0 +-2d%N@8-jd-E3#($"HLRPScfcMX-FT%#hVK5kD813!(14eB4lpY@b5Vc%rJNX'2" +6$,V*IS`)@cBmAD$90$[#4NqVh9`IR'$1,YqlfJ'5PD1#*C3EQ[,*CcbYb0-c-35 +rdbfEflj5ZR%H3bGL0m+pPpMZ(Zmi4+5YXZcUKDMGqTA*b"-64A890rGeq[ARNdU +0KiR2TZhJ9G)!CR5a`jM8CiSaKf'Ldm"Qb1*k4AFC+,8kIDAJDXC1$d@&F2P*+km +G5`HfM"'jhf+$eB@G1T9+QdEFK82MEl)JL@rLNj3c"AEj(Tf)EQqqA#mhZjSpGJ8 +4lUM-+cQm1+QYi-f3!$56+RaEHYiUcjKj50JNr$E$8k&q)R-H*PSN,4kB@)&2e06 +3(D0`DXcc8#BP&T!!PUi!@,%DT!R`(j@%0m8cj5Zi3c*llFr[!EP'5[cD`QRPdKa +-'H)`'6C1pe,haqMjZ0IMV-f4NeaKkp68e668H+h2+QCRFm6"BUY643#j(CHkmUB +e,H6pV21J3Bhd&0FQEkE-1imqEY`,34"R*ChBp'LKhhJp+6Em9PZ&R3K*FLQieIB +3FjL@GA)ALEhB8U2bRXbbM,bNIU4@Q-(aR&X!(1+,kCREfClCP!HFDSAapG4i@11 +a'm*#BeS@PDK#2P#3!"pHHAZPj[*Xp3K%MaV*J+&Mhr#RSP`8UF6kEYM%K#IqfPi +4('p-h)-qd,3ch'RTe[U4SZE%Qp[Zj#&Uhe(Jb0q[+`,,3U9J%H"[iai3C,`b#4b +KZ(TJe*9#ApH"eXfr!+Qf568U2(%2&EJiAc*-lkE*Kk9LLK`-02Za0eSTk)a0iJI +SVRC5hUaH6DafGC9fBbN!r*31b1@@9e'ARiVr8K3)pIVVI4(IURc$6+TAaGL1"U9 +5Hji[q'e@[VL0FPQAMfaV2kXFUrB8Xeq1lkj+NM5L)ck1q5BfCbfpl"JV1kVK%pP +FLIr8@@aLi-SXNDNITRF+eHj4#mm@1Fp#+2#%Lcp(MRM4AJ`i$lakKmcPelb[h69 +6%jk%pp@R*J4pbl`'ILdb24f(E980,$-AKhfGf@ikqS1l-e&9`bE0L0HYDV0,fHD +F1+M6Njh5piKk['MD0JQ2RML2"pqI[NMclqfhM6XaV-S[TR`'ijF9Vi,dZK&iR(@ +ZRA*(cf&,i,!*Z*!!SKj)V"Qimhh8)kBNmCP[VQZBKk!i(!2(i[cGdRir,b[J3pV +HfAFl9afj0$ar(3-Eq+8*KS)&kMX$4X-d@EPldD6"'41kQXY&'pNT&d'(eGRlZ*Q +"h-!'9EXc4qi((PZ`(lpFE)L+5j2B2a&1`YqGAF4iNBK&@m&3"1)838)cPeSQF,V +QH1EJY0r99QPafaF3-,#TdkAY&mHN`YHK'#P)%S@aMUqeerf#%D!Yck,h33Qea4f +8@FAbDM6M#+#1hB&kGUMk59c,33F(@(-QN8S2R2EeL*J`#49"MQiY0jdkq0CmjkV +UD4DVU9,Q3)0Ee')0PUK1,rFmJB(P4*BVCFYPQiL#UP@Y$5V9d*jfS"cCA6SL)T% +d43)#Z5GB([BQeFYfrQb&eGSU0kZ#GP(C*jUf+5NV2h3EQ6+M3N@+Cb0&3RhD#hF +,4e+1h-ERJA"U6A22(qR[hAZD@f&j@PRhcJemDpMHjdH"4RZ"ArY6FI9%3eQ0,c, +Dq"9V!T[ar6)J8TLYc3(S3N+i1S(hb4J"di"K[idYYY-lbB13!(A9192,cVp5dhB +KbFV)rP"%5R)"QmB$jVNH*,d0"+4MMQBbk)9MGr65H"V"2PfLm98FD'(#8SB8fRY +VfPp&TqHN!9+QCLfVpV(8QT@5Xbk@%%&@cZ2b@,815#Q-`!lT6c13!,YQ0pMpf%Y +&Ti!H2R()%AGFfp#QkF-m+6`8m1![NjBXaN10VTIdIc,&jGL$0mVFrjPRf+jT5af +@cJX-Hp+@[TTc#-aRVBjVM3IkB!4)3Y6&a@4dKqb!U09k4jdM#KeXZl98")G*BAa +#)FDd$EJIlI3(YZadY6$mZ(mM#!k+A2f%$Vaa$F'3!%PJ)Q0@Y"!mA![a0F)'imA +U&Bp"UmliLR(AS"S#Jf#J+-rID-VUJM!AN9@DlYM&SSIT"X+ZhYjSl$b*LjSAi*P +qPaVm1)$RPN6h23h[953-@YBB&fINpX"%L[%D6M)29ZV8Ab5P2XGZCTN!'$Aq1-% +HfP3R*qafH')p2+r!$C6r0"(0'"5L5`XH&BJ3`pY(m*SBJAV$XfI4[)eM$$6[C#X +e2T3rZU#e9A%&RmS2i*,56rG%")G6,mBC[NdUbaJccN*bLa*ZTFQjDffLF)d5eI[ +"b-&e4dc)l@SQlI@aaDa"m[EeT'IXpBH@)GZmmJr*-%BVc$X8pXiIXBJL(Gp$LmN +m`VZ)TGr#hPAe5[&8lh#kj5CMGXrq61"JLdM9cpAk8Af9`Ed&*f5UcT4[p(fXT%r +rmZhKYF$*iZ+d)ENJ,M&lX9L,(cSf26SJ6ddqH)(N@Dpf#BSqAUpV%E&6TDMf"RV +`43YS(45B41X9*6)TP"KE)M1')C5(aVAMTJkhLl'e+f2(Dcb!ic5"Yl8DHE3*XPl +"m@)4cB$Hh[%4YcFH3c,aeh5Q@,F&iIp3bL,"fq&IN6)HAf1[hGC9B+48AH#FBB3 +!%j6(MPcF[DXHfE-Rjir86e$l*f@&TfN%HP`J&ei(Jpp6aA*p2NVRZBD8Y5LZBa4 +QNH[SD@&U*5p,Y[r&RCi8TKI(-T9FSk#L%@T6'%8Ji,&3PjFmLqe%$$$DMj+"YA% +pm@9,qB9k#S[j#"UiBPD$([m+YZJT4r#4!E120eSf%USKV`er8NX8Vb#%KSjR6'b +8&RSl)*'`4L5S#IBMD-F!Sja`lIE1-0"Y9E&AHC+Q&9Q%6B3$1cG%i(Ti5Ue`d@8 +)J5bUf9CE1dRIbr,@"-%[%0[JDYGrQ9dVIHRa+kBjG1Z2!i@-McS-ThJD+5-KblL +#F8d-iFI#cQBp'VHb1S0NTqjpbCkF)E)q$2bM"e3-"aNqEa%9PT3844q'iRHb-R# +K5,MMM[GlP`C2$TNbJY&Z*IdMk)ke'3LD(QJcF-pY0-P8-,6Ip`$*6fZ2e61%qPa +cC9BUrMZ6(Z2hHpX(Aa'I0X5EQ4rea-`EarES0#SaM%,8F[jdHAKVM,$&p5YPDK5 +I0)!i"B34KD`fK-b-+A8iU,UVqM&`kqL`Jl-`#&QkV41GU8#(9*!!ZTBISfm[6`E +8C-Ni)$N*D)3dN!$b-EdI'Nad`RCH&1P*M4pk'XadR9S90r+)pITh+6K'4Y6'[Fd +pPlq+-5FPRIQ4Gj5-U-aXPXS-QVr-1D)pE+CAA"ZkES8H`RU$QMGVR-*4@14GjXC +I"$L-"hNkeFd*q9rR3XPDch5PEp4iqX'!Xb9C$ABST8ZErihbi2"@"IAiK)f-l-m +TS-UA-1'!idD!kplJ84[81rSB)j%&hJar+V1'KT[0bVlq*9MEjKlIAJ1lPlPCcDS +#C'iP2CD8#G*AT*j+5",ZU`U,h%J`NN-,L9RrTe9@[B@X6(h0'TTq&Q2b4V&-fEL +3!#0PH))`S2S2B3!#AaN2cba4XkNEmf"-p%A#kjKpl*A&%Db"3a@jbNBdZUSK+dK +iJA8I$*6-CEq,0d`Qm43fQAYV&6P6[YD(!*-(XmV'i%bG8riL'180M!FRPdEVQLq +kMfR)5+[Y4iQ004b-2*cK$$!"%0)mV`DcC9qifqiTNB31`%&KQ`r9dpaKIFCaecH +8"1[46$2RjCA05r9"j(if(-PXj'c#4KkL)&ZeNlHRT'18bDK9$"N6-j9Ljr+U%2I +3BAfE'902T`L$`FTAI["J6G+lU)D6SE3`UIK0(jfYPamr4"R9Djj'f@hfR*!!+`M +DB)!!Bcc')QEA4PeCi$9RbA#aG9VQ1qjYQ4jeN@K08r#ee%U8"'J)i))eR@3+hkB +DaTFUh5!d,)$XFQ@9Nr`$-ie%Q!hE)dM@riSKNl3'QjqYY+I,l"#ZMJY9XSQfSaJ +)Q9PT'(#QUP62)ejj@9efGAa%Z,U[#U@DI*iJ9GSpV)(XNEhTfbh%K4h$b348lL! +c-YMe9X(BbTPGp3*V3Mk$0G)j2P&4aIU"$VSR`d%rJD[bd$e'$5$6+PJD'*F1d3T +R`k$I',A8P1DCM8VrPCL#+I"@@L@4Rc6S+IIkK#8&MUr0i4%@U["ZFGc6T5N+eqY +R!*RNG4BA-PYjG[F9QUr0'a`8["+Aq(`(8,`@Hlb8YI%jYC3AqBL2'(-SZ3"&3P# +QjkY9afe2iVE%XpiaQYqIrjePGUNYG$&c0AS3P*!!-h9JAYmMPj[@`[$4S5'Vm1X +&-[JXJ(GP0hB3lUMjX)Rc"[bQd*2'dZM#H#Y,1[3!&%F3f*R6NQ&&6YR63hmk[S9 +QdGrfdbMB12'rrH1(iHCr08e@Sbi-%9[e*G[ArF1M6+5iVMm8QK"%C),DbmZDIeN +%BR9,rmMb@,leJ[&&1Zk9,kld'jQPaeBej)AVR'[ArATJP2')ST8KaMX6-*pR2Ej +3P'&2C!&KkCm$R*%4!m%MpJSAiUh)2a[YmJUPIqkQPPHRBN+beZ&5QKa%FXUV&Z1 +0[mjZE3-A@`$rEJ'-6dHX8+)mIlkL@Ab)F0K[6fKZMj)UXj3#JU5V@#Ph[c9V@bD +EIVN*kGXT*6pLH)(12GbJ9-SJ+r2*#MG[!*D-RTC-G8LBCMpm9Y[T1!-(6d1CfVa +`p4H1!YH`BYD`e4`1YhCc0jTHJVZ[plLPXp1P)*fKqYEfcZ1MM*)([V*`#eEPMSd +Q9-"Aq4h!QICJdm#Y)p&p6A-MakA8(V85ERl6bSTE8@Yc'2T@rcIqij5l$'f!I0F +erab"PJ0"`S,)j&TlGEPeZ+X-!(%a@0bMJ9!C,(1NQE2d[iC)JBmTQ0CbVBd+KmD +X1l1(XMF'HH!4@HH82@Q8DCIEYdUNZ3JAN!"1KMlQ-kPUi@RY[pAqm9k5Tdf1[[d +)A1I$R0d5MZ&cPi"Y26@prAaC%ZfQch)UVQr#@8KH$R*lCA!R@GGQG@R%k"PS3$m +,NXH92d*'bNb'b)BNkHZpTbFVh`D)@h*T(cC,DhVRqPl11E821%QRlU-ABfiVC,F +-i9@3!'a#P5F#R--m4T[!SRVX-a*LfbpMePm+1IrLX+X,52rp&k!3!hD$r+ejFm2 +6ELi1i2aPYfjBZ'U[V3k[2PAhZDqCh$8)de*XqS3AM51ZiVhLJQh8&i'QG5al*Y) +'`G@22$08jUqVM9'pebR"j129#Q@r4MH[IV8aUkKSF8ecN5Bfl3Xa+'PNa1B3BUR +lCCG""T%l+l&l"3$m`Y)H0qeFC@"JK')13`6MQVpCH04-qmJP6m5UiLfFBFCR)Gf +r54@`kb#J1MmVMJ6PE!'9eQ*8+hN*,9#)&pGlAaRkN!#'0iYq$lc$Tl1Sh"Xf`M5 +a0BXma$9,9ZfDBGfFqk!@)FlE"a@UBJ$(Nij'EKmMGHjP)If,0hX0-AG!3UCjMlI +%3r+)Mj-lji5$LP,reRH3!-N(-CXVje1XD6B2Yj38*MdrG`C!pYTh+r*HBJB8pSM +M$TH&*CUSSrXV(kfqZ"jPQ9ZN9U(9&T&b4f6N)PLh`lCEZpK*[a(FDHS9J(eElGR +hLUSUHmHVf5*hrj'6j-@,@2c#jqm1TjUF0(B25BS6fkmFCF(@F!AEIcpll)Q)N!$ +@CR$SF+fFZG1C"hSNi[,$,8c1c@Q'Z(iQfIp*lS&+,`I&`506$5a+[SHDP#kK4N* +E2)61Z!1HBpf$kLXGeSP@1Y[#p1R8H@*q$Q5)`f%%GqrarqA$S!p52`e-`1bNl!U +HkpalSUF%rq[HpeJ!Yd+cLKSkVR-Tajea%S5(I%FpYe#jQKQKRIe$)E9H1kqFMSU +Z9!b!cBC2UmKa,`*[bj!!VdPNUNNmj#)&eIJXc4-K#d'6mFQfML,k%"b'$EZRH`M +HrA,S94'R40m(mkkj0H&Vb6UP9h&eb'GM3!*DJeB1fambb4eHrUbMper+UqV4!Um +c%30kjV#YTAUIl+rfC'096--N&U(G8SbYXhJll5jMYJ,Zl@VSPhDBIM94+GcGKGZ +pKpCb+(N6-l6p$dSQm*L`BPrBaD"XHaE%QUL[1B"1SXXf4Z4iIc$34A*N'Td0A,h +9D3f6*5jM$,*Ba*Q)Nm3,(abY-pk6+"a6-1"0a&5IQrPll`XrR&iql(#P[f*P'AE +Ylb'0H3cfD@Y`4TYbBlNr4CSRf&M2L'K9*XEa(8"HdPLD5l$`kFT[QS[4BGKlh"D +%fZLHHQ(MZRfVBVY-R*r!k(Mk`q%4eIi,hlGRh*QmUM6hQ%qQ2Kj"*f1-K'Y!qL@ +6mBA0@[hT'$m!NK5*GdEaEFLQm[%ZJT8IDqY#qd43L)-U%JXMN!#-0"JVrq'l%p5 +JeE+pN!#JTa5'eN-"GQf'!fj'+GkG#9r@Zb*&2F`bF!UUP`BTJXm,kl,H!eeY!%X +!fGk#4KF$TR@S%C*E@#rBZY'+XICKV8M[3ES8eY`3@bhi2D#1pleLlIl2HCjM)04 +#cKKbIQ(S`%i#TJ%86Ga$ej1T`&bkkk1j+!Gd3(LqbZXcV#QLY&Kd5dRQP8[T34# +XGQR#Kl8(Pj-S4-I`&`fY!%I@rmhFBlcRp-)59V'pRY[5VEQ6U-h%IV[IK$N9(Z# +dUMjEMJl'm55)'1YJFVHI5'T`Bb2CG"F9@N%dD`[B@",,[DD#b%qhmr3Hq#kL+d3 +rUJ2LI!#1al'fTQi[+"Mi-jC&00I`K*R$CmNVZ,CHX8A#-fT0qL&2h2)+E#@SlQY +)b%qXlKPYdMGbbV--XX8CZm$E4lj#)32ic3Ej@)mPN[)&d`Se)9VrM5&XSk[BqM8 +8[,jXbVY+!jlJ+GK9'fZEBh%VKaMbfZQdUE3[JF,YpJmbF2eI-Y5FKEl"9L64YAR +NLaLqHMfFGJfFpR$VUP3KajJE8SP[$5-#qNm#T8a-GXDkbN)8hFFd(dk@C"`q)J6 +URS*2bQ"!N!!0@@i0,hMVDk1qX0!"IRGJ#@Z!qh&)f$lkJarIKDi3r$`ISc[Q9fQ +FD"V'e816lF$2$5RX*ULe18m9CV1fHLYFL8qI+a62'V`9I@`@!p+*qkHD+MH@`p) +f8p[dE%KC`!G1`hSU`klE21$VSK5Jdch4%IL1dX*#VTiq@b9HiHV`0D6UVjdNYB9 +a(U%HjXY$QZf`KkG!9(`DhXrJ0XriP[hB'U"imGMHdlN%aAG%&$rq((*plP-qhc1 +rMM$a*'JJdAJ+NE8#-lU&*P[d&,e%2@kNmPDh1JaqS0mI+1bN68i,CT1"8FlGLjI +14cV3F&#c),4c9lrRU68LY(0K9XlB"q0Db$4KcSF3-HmaZ(AUU@U+ar3)8a%jfB4 +fB'fai("jNpB80LH[UPF6laE[MmBrqIrcV[m"cQ%DJYr5S2&aQQ1NS-IP`DXUU50 +hUbTGq"@)&D&UkTQKhpR1bX`SifQLhb)&K+le1(S#!Nl"e%pK0[[[eV63BEAbU8$ +X5iMH+rS4#!l0@$"PrZ*,4BEB3h$Y5j8I+,cGjY6h(d%m'IYZ,#hGMdHGhqrPejF +2[%6'q!BXrpV#@Re'KKQ%[kKN"KCI6mRS5J[TraB[f@&ca-cZ@e8IPhCMN6A1!P) +[PL2aIr"dqS",P#LMkH"d0@d@MRm[YL'a%fJX+`kYk4cmXTM@QrEHlV!Qf-FHlC& +bZPX+a&h1-$pSf!H0&D3AI`fE`KplUY`Th+A%ec'r),"fc[KrTe,4A%jQY&*I8'4 +ppCq"l9)$qaNCG,(FHbGPEE0*i%0rSZM5Xh+S([bYAQ!IRGqk#@&Jm0N6@*1hd,- +fb#CJ&NDDS30pcpN4S9lH!YH&CA'$3SEV+J9KD$6'q&[-!$d`J+VZaNA`G*0Gh6r +p-Vl1da+RQi8NL&9-Tb!U#pmDH3Q$'b!ZAT0U%6A0!8r2@&d8Xa4FP0lEUED8Cd( +-8[I9EFFp5)PGD6qb&+H@q#'lUTel+1!LZ8r4XKNLV"IkHG!,Aiia'2Cb'QS81kG +@YT5c!TE4UARiA513!%54Y!Zp2FJU"Y5U($ZAT*Y3%36,f$Q&i#V&-XRf8p0d6Tl +'d5hE-UY)fk1A3&1DblABiVS3)I!XjV*c0mH,(PC2C43F&kAT[4LhNXYp64'JS(Z +4d!RH"h@4MihmIeU@6mUDre,AZ*5r6&qX4Z6B!cZjB"RE&lU5$&JES@[Z%,A*l6q +jUXj0m$rLj$MdlJ@Q'YM)B*!!TU"ffi-aKAYP4+pa5Ai8YLVL8D)4)%lDQ%pPU9q +iPdj"V1SC'*)%P-q`-c!5$b0q2FVVqGV)B"$*+'5YRM@RJ*Eaj1"qmSMZVGLJHeA +L&`p(XAl&d+GqbUr'rZkR(j!!(AZ6F-C$9'Gcc&0c,ZUmAGbR5BB-*5@)CU9'8,N +f#10BVjeY%(a1"-h-)Aehq2BbSPDXhq*lhjUMMf4*"PQM$h(aPT!!rb5LdrY+3q( +`ppa@c(XZ&&Hak(Y&f[P@@MA"*C'2@QK%h$JDq#+M5)H[VPH0j&5UJd#3!+U9IQA +%'NQA,+)Q4#`&q%L!R'C@Zq4efb[c%d6[#VIf*j!!Aa6iJfPd&1-G5YmkIVqP%`[ +fhY9Z*bP+AQ"j-(6@&!Y#eIb16G$PieEacKKlNa&R8KbEbrKBprA1LFLqVl+ACZ- +hm(-GBc9Rdb!5)qhZ!N'G5$ADbk0[L[r#-%VXIqLJ(0R,jAf2ep0ZFcZF+hGAl0r +!2N%@NEEef-Yr@-Y%#PllBGAUjC'i[drp[aBVbPJ+TNj#-%!hT@je4@YRB2m8&2! +$U+la%dKLhSk)(@bIU5l5k"C$Z(feY"#-X[K3YB#U+p"'hDkP"iBkK'38"8RGl,( +r(kN"cbT"KjJN4D`a!k&PCR3)X0m4*@X3f#eB!Y-[Xpq3!+Hb3'Q2XV,bjfRdaX$ +0G*L$4P9E*iZAr@jC(8)$[4XekF'T+Kc'a8%``TE3dj!!lK-ND2V&-jF'S##PK-i +lqdcM)"eXaBklQ#E*RFJKm#@NKk%6j`QlYC!!i-dbDG$-H6ENVkG0SMFH"CmGQ[a +*Mjl"JqX`,5pGSDl1YFH!["CXMi)0dEc9fG3!NK0hN!#*(0m+f!)5cIP)k'BDF93 +Cq'LhMFb)$B9NSjB[TUGIa)a4#icTTmN*9[K%[d+16R#iEA5@c,9KkX%YM,$2[mG +$EcafZlpQ0(0C%NRNYa#F4+E1Z*XCXXaBVNBKBX'blMjrGGQhe5c)Y!A[5MH)%G- +T4Q0F6RZaGe(TVN@mmcJ#fJarYAG+TpV$dq$%kR"he65&P%$ZNV,*K64jr3Q1&5p +25f"QebFrVA0eRG8r@"mm'ZEi8,85,96X(B,91Bm4J33Ae[Q%I0+pXXr8Pcqa8qV +aPYMU(U"pbTJm(@BdT5ESGH5Le"rceJ'03%'acRU4VbY9Jph'3bXP4Hj,,6"flZ& +Y2IFPYmqZhB5$k&ET1@0F`bN5,Hf1)LRIH(S'`(-L42G+XYlDkZAQUX)f@H05'PL +h+-K*,A%$YlGac5rjXa5pje1HJiF)#KKB&m2H$(*[rqpNG0iSaV9PSS90!RjN+)J +Yh&`VpTTm5-iRNp-+%UPJPk#0*IK4j3jYhjTJ*+),Qed$m9,L9pc[9X6E!)de1GI +S05QVD*&*k8GjLS"+G854PmKmMhI"Mh%cPr8VqRZ1&-G8Ii*TV3XFh4DAf1UV[k8 +pCf%,RcXH*6Ui`'!qX[jEpk#Pe&Aj&(!I9L%[c#5I!,$0am)Qr30eS$5Y++T@"-B +%BX[0NiNHES&eB+$dK2MiS%-XPKU+K-lRPf)4p)%9c,X`(0+&cAT01+e81EB!j61 +-UeT0haX6CG"`6$c5jMJbcrh#pRL0dSkL$imrF56!Mf1r%IfLZHrd[+&"r##bNT6 +mCV`T"cGj3ZcFMQXVX1U%kVARHpfH"!TfN!"09c'2eD3Y5VY+)G@6##HSGKc&M9b +-+MS#a3#TL9$k$QU@DBeT(+mbLV9IHBmI1F$rcH"ak#2fa0FU%ef9!mqCTRGlY0, +MENfEPq)&I%(8(,2qXrrMF@Mfd[@('4f@6pCJ,j!!ATPX(dmXZ@UcCbCR8RS1c!K +T)aaLR8mGb%TT5&*(V8*lNff'YUQpG$##[DlTL'eUGC8L5E(35jq[,0@KEacma%- +LXRCN!M$#i+Z@*0i#D")RP"58a8q8f(*acXVUYV[+H&k1$F2X+60M"9*MrS+E,f8 +E6B8lXYM4F2SJq"T6pS@$c&Y*Q4Zd(5PINN'*UiY#6A[$,6BMkhefLZpfP(e2T@6 +6GXYb`3D%GhqT)i&ZTkf5PZkk'+d9@Qh3A3`CQbjITGX(T`r',4XLTAV!Q%rRL@8 +*fp`%F+-!I5pQrT+$(hHT")IAE2rFS`Rk&KTIU')E9*Yj4`j0,RXKDh2iIq**RD6 ++2A*j8c',ae!IIZ+$X9X36S1CSCa0&'-8&MK0kRrRN!#`hAPT4G19Y"XJ6Vf!p!T +ea1dlP@h'ce2$R!rKhJirU8-l$*jm0FL,jLa24UCPbJQ"SkE$qaE2B"kaX-SF)6p +(1TIL$2GXBF[V@+$8#lfB(HTHC[R(P5KqTl+dT`5Eaj&K*PCQ2ac(m#PS4G(F6#) +T5GEd,dN6b-ICDGV%"[V@a'UTCi6#bc39S"`&TLq4Ecr@VYE-CZ2jDfLL5+L%83Q +qR@T-r,hHF"$68he1L8'4ESEHpX3p9I0ZpV+*FqGmEML03q$I1@kY!G98A)RdM+4 +SJmM%U&[C`0)Mp"qFi@*%`rhic#5)"N$#i*Z"[-SY$623MiH$"PkDm+%@4BNml1$ +3FqBHVrlBca,HrJ!6a2QbS522e&#MP*mFhM`e%5K`&N5JZ`fh"Xjj&PQqQ&NdKEI +i!+%(#TBT%ZpY6p3qp699M6@+ZY*9)kJ!rCiXr0)+P"lCAG[ia5'K@kKVA&mc#iX +Jk&HHR201f5c'jC(4%$33'BH'9b56%p2QFr$HkM6h%8`+3'a`[9GD2M3#Y`GQ%Mb +U",$a"5G'X*@eGZPrX`J#e[Pi#aZ@e3qNkYd8BNiq$4Ace[d8ea#aL5qllXI0&XB +'kkbSa-R"f#)PNr6QI6*8l"jZUZ&kqeZ%I8CFm5Q+5f[Rr2d([++NZ@iNU#C1-ik +q*-@0d-U(2ce9+8ZXmK#fafED(&b`VT54-eX%1ajjZZ2[[aa5'3C(Y$LJ3YZ&e&[ +9JS#PhPX(JSE9iJ1ICF5pI#X4`3+"fM1BD-Q4i"`MJY#@l[b0#RXZ3kpRbrIrYN( +PrM8MLpmhke20T,$$3BVZrZad!e-AIFh[*![KUYU6EmdRqm&JJ(N2ZB4-"aSb[L) +KE1!b!h$FDhU0R`2lf35rkb3LAaeaYFT*ba[*IfT4QBN8mJ`*-M3d"[1'!%AJh&e +QVA4%%NSrrd8I#*!!CIi&k2M*A4U1A$cYZ622"rIDHYY1T&6jYchA1&b0+G@1G0% +`5S#*ZD'UJ14G-$`Z[ekNC,a9dJKfNAeai)aklk49TJXH-&TDe!Z03rbCmql0D1r +d1GMdSm&SF+rd3hMFUlVbji!'VKX4p%)FeEe&X4PblQ,9f,fhMa,+KYf*HK%3#4* +,@q1)MVI5,`k!Ff!#Q)mCG0Gh,TI)HhaHX-LETZ,3%[Y$"lb2$E046))j-P&f#Xe +Hd[*hA3S&5@LI6ACp'kSa3c`iTqJ,4h*2,`$J0@$3%)'6[mDQT(EkEYaN0[fZBU) +C&20i#-d)Aj9IrPa&"JT&M46Dha&5TM69R*hcA-Q&D2MSbMq(X!TJ93lBN!!KNDN +EBb-)&DR,A'-06I`ZriNb+2E+9[b9KFc6A,iYq)Jf9r4VZ%E"#-l"lqRjU%Kl%aA +4f6Jm6)hLeBV,US)12q'Y5VXm%08NEfSmfk@JlETd35-!rR*Q&GHEJRE,[X4Z%B' +jf08IrBEG&qPlLXaX[(3VY+0@dqFSZ!!m'Y-JCS9R()!b[NSc`pZ4Jp1,B#e%jXf +A!EaYV'T!2eKHc0L8-j%+m!M0"%ea&Ajf0C0U*S4C[TL%L[P+TchlLm()mK(kZja +4YG11p#TC4BLX023ceKU!"KKjb,8EUA0k@4!6A1PA)VVlAbC!S4XXP0!CFaMDFbd +AJi$3,#)1CZHjU0#F(4365@*VG3`4MT8*XUr0A@2Y3+VJZiD2'PVIRmcDadq-"ch +c#VMN6*'4&U9h2AT8A6"#%-"(9Z@raDk%UIDE+%'FC5PGrDRH5XQHY5i`#!ZMq+Z +#@pKZ(dpV@#G!*4e'62UimDhKh4Y091Y`$6KY[V(m(YmT1`aLrbYbZ9Frd`B-a)k +ED*GL)r-K[5!XYk4'LT!!Ma,V%!Tm,iQPHTXS*6R&YNY5PZclbMMf+$&VN3'*N!! +&QbGqS"Mi6rIDK*!!(+"e-6&mqjbRI3A(2i2SR&@EU!QZ$`)PQ4jKMGAe#,hTIAm ++Y"NqX8XTHaP,S&b$cBdkY81(pqC+P8+YP43$'Xp%kfm(mpfNAa[-VX8!S#NaU`f +NM3GD)$9*1K&p4F$P[UH'CmYp2&L$QaD&)p5))P9$43I[h$FR5fRVZeAe5jUVCRF +lbc1UZ)$Ur*qQKdipZ9DDcUB%cPfIJbPP`b)lXP8HGC5%d4dMG*dUpN@@bMPAjIE +p$dfXLVNDTD1+a&QC)fpYE)ba8'6IFGL,@2,&T5+5ppi)6!UV-##ZUbkJ&L,#rRS +55E!8a`*kCD5E,`M,`6A!PkYXKi[RRf@i[[a-34%i2I!`B5jcqUC!V!fiZMM0Y#k +0mCbM9R[f8&#EYHPS(f$iehFl-6`dipHR3EYjjlL+GkHll%(bi+80&#c8V`cbP)5 +#i32rU-6p"0SY(1j6MP`D@@JbXM,0%2f`li1Qi5iDjKrr5%MpQLF!'ZZ`P-MUmU& +k+H2MheZI[3&$9m%9kf3A"If9rbpklFNbG$ak4-RT+E&`G"8PS(RXRNVEp*!!MQM +[`+S*P8V4kcSUel6edp"%l@3iKLi2M5B0C+JfLLj$ZPDl5"EQ+4@er-iIc2$l6(T +h2hHl-qr3f5G@TXjHRfiVrZ3f)p&5TqDPKq5[V4@`&99m(0CDPQ#)4M%fD$,A((' +b-R&hB$8-'YU4M[9BrcfH43G)CVCB@F$ECP2d6SKU#K&mPF`83'P$S[r(1-UX03H +$@'A)c'$kCTJjFYiBYfIq&r0LhA0H)B8bpRfHZGJ5)hla(Bh6Y4!h0e-&-!qVA3E +UVE"iaES!GjK)pr%Q4,@)X,IlJ+U1%dc`,bcqJDS+SJ'F4M&@'X%ZXRS,5RB"d&E +U[r'3!!G'3!LhZY03d)2QN8293'e40[G('&2M$5C(MZ8RXkE[i5cP)f11VGCL"Ri +)GX&69+j24A!k(AKNlHMK4i85N!$aafm[2HpYr+Q-8rMcR5T'U$#Q2e#!YFeN1kU +b@*mHj6rHU4#XAF*6ZA&%rQACa(@G$T9rUm9+)0[SEZ@em$T,LE3)CTN3(-[p*E" +(C(B1L"PK)*rDR[P-eI&%P96UD!,akle#fIeZ3*pL4"S(T*EM9)ZKk!3hIi@q!KB +!XdM&34SfQjm'IbkSiGF21qC`b"*J@cbKXj2Q56362cj$b)SfXEc2Sd'c66mCJ*i +%J`FT(i"[a+K1UeEQLJLcD2K&Q2Zr*#9G9Zma2eAdGQ8q6MXDf6mZfm6)aF*cqHp +L68CV&HQh8GPeH%XID%P2YC9cRbjT*86L8bR8fFX@!rKLFQX)ljm0f"BA'bZM1!U +2V9jSZLK&Q"#NiR,mH9+-lcA!c'D-M(a)fSH(i"(f[GdA%42XN!"K"NK4e!!CJGh +#NBKKV%5ccFK"6bJb%NT0LI`"(DKN'RFUEK*K0L8q50lV)YKrDKl0!bY$B9Gq1R" +1RCqaE+`0(4M2"b$Rb+56K%$JIA-c16p9q%EU$[2b-AFSLeFIRHEhYFaaYT`HjFT +R"rU-k%"p1Z$%&h3F[dhN"V-c,ZNaKYY&pPhherE"MaHq50[dSc2Q,I&F9q`8'Mq +!5iN[c06RAqa21KFLFQ3QcNpV+K**R$a4'NDdL)L6D!r3rpFlk)B`@V[NS2$q4$B +B(ZRVSkm&a'X-T5Krk6ZaaT4r4DhILdHQ9"B2M%lp3E8cUL&X!fC`0!0kKYajL9b +qCrNRMAF,6EeZQUhH&$eCCSB-qKPA%#c+%rcV#3VPUr9@Zpcrd#iNb`V-P6GR-*[ +FamEhmMjNQm&`[T%q0NaAjc&bi30XRfe&*M(dm6*rU-H'hl,kFN39Bf+Vd*(3'G, +!Dfq+rC!!6143X3SFEj!!M#CE!6kq)#dY!j!!eMpYC0le4j4`$cb[*Kq+JIl22(B +(cDBJT9NT#c#(9bVbld6#EaM!03Jk3j@#HSK8Z'mQm`H`Y,,)`q5E1@LKVhIf@Ip +2Rq`2Yj2B)+!3Z1Ql-dA+!HFb!H(0i8RkG8@qS'R6b+"iVlh1Gb6QLZ0i"`&E`pl +kk3JRF5Bcd#cY$5rq("#kM0PX1G'l-QFZQ2[Q-K`9cqeRqBNe95F3Iq"(L2e80QY +11Jmc91S00[)NqN6TdU'aUqMPaK(jqD-[U3@J"[$E3XSl"pm(+)a5R-'#S'PD95C +'C1#f'4c0HFU`4NA0Y&[R$@KF5$*@'(Bh2NkN14pJ&h!)ii&GR*E)!eKa%c0S2+T +XfV["*qpJJ,i+qL4"aA04VPbHJ0cRNS%AAN8qJ-0@QcBY9B3[@Sr#b0*bRR8Bcjc +pl+i%p,2YadeC!T3Nqk)@d4bU3E'8mR9HqCS!@Ke[6Y4H"`a$cJRPP8-DPi0Ib+k +C*LX,N6JcPSk"QU,fA"$*,C'91qfZ@hXmBM[!Tj&kI9K2bC,DbPF3c5[RHQc'lCK +'"CT3(D0pSG*Qfc8!8jB0(@$VSkQGYVd'9mB-B`IZX-AaAT28920)CpqJX&m4063 +c"4%0SG3!9TeiNlS1XdTT(jY8ASLC-3f&cJJC)@Kj[,V1iJSL@m!VV[e1c+N!C2Y +dT2)%+@e1'f0D,+E!AZi!MZ)MJRI4R25$'0Xh0'Ya"3)a"ce1*fTT[@HR",+Bl43 +-VbeerUlN$&PRdeTSDVj,0K"PmUAa4C[NC-TNhdTeR9Kmdd1dha,HlPkSbZCC[mP +el&1E0edhh)%Yd,PA!TQDkE@&TAaA&hP+mqdS5)-bdK8lHc[+h4IAS+U5q#I%A!L ++0aMZK9MiKBHl)$!0)%J2Z&+GrCT3ejKKp4+bD,15QLMY6L@caf&NN!#1Ke)-HA6 +-Y!B%JAc5a+4#l-!YIR*kpekT($5Y%1NS+Ipk6CK(pUa1UJpYEK0%T#$VrMb',RQ +'lXHdVV&AfaNVYLb!cCI2-59ZQdJmX,2Sfp3bU6D#a8ADU1UhX"RlI+!I-344i#l +6i$p*NK#)#XGdCM'`56VfSJj(pHQQP45p-&dU[cJS,`QH#YjBPD-A![rZRpJ3kGA +VfRCGl,a%iAR!`Rj'GaNV-(Tr8DD`cfF&3q@jXI2(pU1bIij"3,AB6@LSqf2Q!Mh +Bb`j!+X5jBU!8A+X312VVhHFJ1m&9@"Np-ELYBEJ)FqYAF+NGJqj@(f$G&pEdZ9' +e4JTF%DRVI(X#d&8*0k[U)bVlk-FrP3-rYAfTRb0VUlRKBk*jVG#&T`FS*@2F8Z1 +@F&D*HR*`H33[8+1p24@[l&(X+*T$Mhd9+[Hr1TZQ'#MN[&V6`[U"J0iE3jmUb&F +kKT3JQ$1bmL9*RJ1lh2"df9b4%Gkf&3pSN9q2r0-&S&4&+3@pKKce(Yq48H#fM2R +Pk0EeT4PBF)iJ8R)$beCQSK,bN!$e9-p2U9XaDRmX)q)6'ZTAXB&),KK"Gh6P1Dd +HYlah0X8S(!`@jhK-MH)HRFZA#-MJQ`qKJZ+p"@[,hX1'X$(e#pd52dh#[HBTflV +`jRaakZNrG'a(Z`8S3ZVJiUib!K$9"hZamb'@"fj8CX!qM#E"i0,$aM*#-IqQ-l% +[#CrC'LZ41M$HHVI"YCU1ZXj`ji%mT(*8J)3fD1bJ#RP1I`HTV0Ad0D#0)$d1Pd- +)'Cd5#hS1lCe0FhmY$2GD0-bK(d$Xr4f1!kBB6"2MFFIH@((5GcK5&k(6$j5CS)$ +j9dlhf1R(1HK5MEBTqJ$@Z1&b1RAZJMDMP)DJ[8)Zqc0ri*384P0!3biPH,E16*D +c4`U@Z&R+#p@IUC*qMAJMP*BHMLI1q'd-k94UUPFhFq4H!VR"L%e(Y8Rp#m(mPa1 +00BSSL%$El)ihVZSUMVpDFIeXY,S-pd!*&UC@m(jY2%Pjir8CT*pEL)jr(ECc0ZR +@(5TaSbIP9!ffdRL[!$SRI[)U&LIhL25dF-U[a#0c9@'SEY%U9FAP4&K3831Qb(T +M"c0SCH+SV2'J8,EAAP011DR(ilTc%GQeHL,BcAPXmk`AdVb%Hi%ji!P[#Z-4k0N +P3QlJVlk,@bm181bTJD1#&pPjK8A13cJ+qFpp&FhQJmNj42b"'pfM([9mN[VJi"B +8hY"%`8'fMT@5TUQhU-"ASjQB68@8&mQrqEJ!FG#bfF'Z*5bXP["dH!4Z+EjcN8d +Mr3M6IEl"b1iHrD"'NZ&`Md,Kq*2V$MV4VfV0Z"Y%G(9cE,"ETfD9X[VQd-r&A39 +3a$"1k4hr`QE,q,94qD!6340-m-"FF`D,Qj)#e1YpV4QkMNBSJ`K*ESl`mla@cTI +eU04PiTPZp!(C(pr4MZVGf$l)dhmTF0GG#e&Xk6ibmIl013M-beBE[3rCC-#U3c4 +m61VPaAf!VMYkA@B4T'*'#IVGcI#G(fYF4-!*IQP2PZ"QI*(V&KU2-q4)#Z6VMB* +pmG`0rP,jla$mV3Dmk"+),9l*48p'FQG,RR,4SU2j0qQ3!)3+-K*-2&ZfjNHcC!J +*BPCDfiY1Jj%mUPS99iNerZ*`V`FbCVpcZ!RrMVVi`hq$Z8ka`KAle%THdKp6IDK +A9#Vd$efU'A86"JE[cZNj0E0M&h[KfAU"IL9H4KT6je&(bCJqIl0FEV!bJr,dM,H +%RfGX#Zr)113#JrKXL$SpeCSLV,3"#T&,[k)YST'0AGJ5M"aT2l6lY"m4ece(8k% +d`kiQHc#kdZ)4Y0D2#NL,kaeNj6!irPB4JS$,HaK*F3+EY2*RlDe,[A8"ek!TS`@ +N1`$QPFUPXeMR#c-YX5I'H54,cciF826#mq,ErTF#!i(BN8%(H5IGdp,#R$!B`I9 +[qQGkma@93+"F,CQ+d'M8q8Al11!jBRA)-9*mKkI)jiaf[kk9+9BA`J(+#(6[Ue" +G'&VF`JGXc$[QX4#V"L#qaUNdr@'Zq9U+Rd-QYG'Bph`pDbG3N!!Q"[q)qiB(YkK +SrHb(GeZ3!)A**`XhJD9EI["aG6Sjjb)MYIkh5kiY$$c*V!jNI6TTjbpU,iVKi"' +jLM,2&ZC)!h288,bm8+T9@U2QF4'Y%ZVFDK9SGQ4T*QYUr!))18+ma-A*9d&La!2 +YCl$Yc`1lZHIrCCe*@S&N-VI+kVH8V)[P4I%LM*!!`[UMCj+ZFmF"ETlX&'8LFTf +5%CH1FIV",6dKLGAdkE&X'RSPUa1h'`RP4QGNL1q!FkQqESQJk3#8d+-c1r,Rqk$ +"*8BELTV4r&'C8$pA8Ac&eKeXMMIDcSK4NGQSD$kV2DQNCU%dJT9*6[K(45'ICeh +2qNcM`5	MX%S@VRTDL*e$Jim"j'GdLlJ,jb-q`$$)hh!'1[IJi"`QjR!+[N[r" +e$al`Uj9CaGiDfC6$Q8)RTNjlHrbYNF%Z69$9[J*4SCI)1R,IrYB'IAp6$GBVh`J +h"R*#f-+,'&LkE1P&*2-6B#Cpq+lN,FLD'hriK+rh0`9b0+jHq%!hFmlri(c"8Zf +Zj)0c`TcNd&K(jb%LD6dN4`"cP8R19-[),b3Z'Z"KqGMje3*(-D+m),qLT*5mQkH +B9Q+i6qDb'ZrT5IRXNZ+bRLr`6)*bh*%e(!h12M9dhI+C59%rM%cb8EbE"mENYr@ +j5P'Z5MaDmFbTH!)RFKa%5FG!&B("Dk6U&DYGIcKQdFjrE#f[9`P`f0H4L4fH!qc +SJ[cYp(Jd0[Rr3Z+p'DY2IPk[3bcNE,62E0E#KhlGeD+U(%"c3LJ-4)f$h)8fF+3 +'@a)NLSd2@-QGQ8S0Rjp&dd4BX5mPVDdU04#,,CGfk3Um9,jb4L9)e@5dJGE5%hL +#HYrM`Ic6,TTqR)q#qRdmr#b[dp2qIl[L)UB-+VS)BAX-j#AHFMG,RF`$A0aB1GI +8F5RGTUe*$8,CM3ANCqScal$-SG(),C%J!eD(d-G%8!D)FSaU(H9P(L@''TkiT2f +Mc@F-SYc0"L0N)A'&-c`D5G0-Uhflp0fP&+2,Fr[2`#$9LVU6MX%+MLEr`B)Vr3` +4Q'qU"#aaC%Tk`3,VU`Xp+`Z0S2H4eI9'ch,mGm'VjUeZ$)#X@A91l[8X&jfTM-, +9,I+C2F&'B-UFK)SlYmf3!1qqS*E+[Xb"Y6&1&`I*b%4-cbl1(FTbS4)bG$-icT3 +f"13N9H*GV6qKhBqL[hX'S2TQXcRL32e6TU!1*-1Jd-Rq*d2$lj!!c81p2h!p,rT +4d(YI-bKcTS+(r%0LJlQL!!iM`LL[S$DLca@ZI[#U6ChrN!#S,PJ&[pE2D0!fj%R +'aXc8aTREr6C['4J)bD6I3`$[#V9KM"U@fYfdhk!m+j)UH(0%rV1lRLAZBaEi9T6 +BJ&0Nb!HdVe-CKpiD'q"LE,6E@A8!`1ZYMGEr5@kJd$#5EmJR'D-HQ`pdAYjQ&Da +R,59YTZ(U5jc0VK`LSTdM`-43H3&k%&V['IV3"$R`VbC*-&-h&i%bC*S-j'kpSka +QeB#HmS1FrAE!ME,2#,0J)ZVAMYQ0cHRh'pC&D0[jYk[Y+"#3!+0(YAK(jbXj#d, +)ELQ03r'Lq[,*0%i`2CNqUb!%4$)I8X#qS2AAq+8liEMD-Q58I3L#XA,)90X$3Dk +N5fUCk@0C`p5"-S(S+@"9Lj)H@!4YpqH8S+&[4#qh[D2aFqm8P-Il!TlhbhSFHAc +Xb'%"%Ie6d1cKMe%994HjBZ`3TVh$hPCZT40T)CG0LZ%,S"AN*BPQ1M0i,Dm4imq +Y95k)$1h2h3T(ff3YQ""Z"prJFbB&h5'VLADH29#@A1lbD)8R1#hS2McaAS19E$$ +f65hR#f5kbijQj[9BF#-GS6)-AJ9&dqa#fTmD0S$PIQSG$1r6jFj(MfL'N4&RQ+A +SM4dTJrLfrZkk0A#8f2hP6@cd##2pb@hM+Vl84+-NE2%lRmrLkU$FdQH*9C@BZfp +*IQb*F1*)j,!I&$CXEf@iV4%%M6+*'cQBm6TC@SpbSLXDX9DbM(jfcq0J[lZDX34 +35(G-96QDV,pm'8@9IU#NEEVB0F8GRhN59G@EhKEUY3T#"c6NE,*VqK&@N50`p%& +H'[4A,b'2kFCfMLJHaYkFmfCV,G!r[f(4b*aH#m$YbbS@f@hrcLbi*6V+AR3(Pe[ +X1@8k)A5a'1qkjUGHUUVq%U5hPLqBCr2LMfDaj2GaGJfjdmKJ1LH0C!9A1d''fHe +B&l#T*+pdKQLIL'He0H,a+84)1mQG#ZIe'9rZU"%j'pph`A&`DrBeAD#8)LY`JG- +$TTZN"%0pfJ"$XfDVk'*aA%3lZGU[Q&(X0%[E8LSPc36)@kplX[#X@LHlK@HIc4G +`XL@),e%miQ6Q1RHj)kRH0l8h'$BFMV5#Bfa[Y*jajlJG`+@3"!%!!$m!%,JMfqk +i)p[Z!!#[#J!")fN!N!21!!rZ[!!+VV)!!#)U!*!%$`"8De0SC@aXFbl2J#jiE@` +!!(2"9%9B9%0A588"!2q3"!#3#S!!N!G#`G8Kde44CHa@Aa`3[hE5CGaS#)!896! +%PqlCVCrYURDGQVlm$Ape4ScZU)EUBDP48I%b"k%HcMm09(R@U,dNJRN`a!*6VHB +FVAimZmJi4B[%NaSkQ-b6Decf0dR@i",+Vi(Jd9$"f2b)6PkZ,,Za3%VYSTpE-5r +K%+SDJ*EQEhflGQ4e1U2E$!CdMQaV*ml()X+3!%5,S+ISH5%Kj[L-h3P$KqV0DH3 +hENeZhQqR),'HUjf*+1YkV@N)64X$50L!PJDYYUR1Sb'6Ta8@H('UUF8'11-A-,A +ZNlj[A&8k`&pTiNS@YTk&SD"'11PY969@L3j)Sb!$kM8*dKTKdhaL%Hm,[Q4V-r8 +h9L%rJS0m85eXHJNN'V["'I1+V,3pc!eUS!,*VbCS!j`[UXCB$%SrdRbq#,cAR2I +"8-fF6S@r'k5kmBRFb!h0)G6YP&h+(4a(rFi290)Pmdjjj*PR48#E42V[-KM5k*Q +664!m-%K`d(fU''RKQ+L3!+B[i45+&Pm`b2$HjQbEZ`lCDLLr45RBdRF"bB$C1%P +i@G0`00&D$ER(Xj!!$"95M5Q)[!b#FecpDpJckUqda4Y5SZ"6T*@'CkV`RYI#XdV +dIlji90+SB2*EXJVYCpQ!X0UPr%!Q*-pVPl2b26%kNi%LirNF,#Pr)eA&M3UFAp% +pHE93QlI9qU-#dmS)dl+3!16Y[H8Ara#,K*eM*R9@j93HLX`L&X23#SJQm*4T$H" +$)AJaIMXc8C%ER[6dFa%kQ[CEL-(fRG*YH2-,pZFh#ZMHrHl6FXjKQJE*d%k0r&+ +RZANm&65L`K2Hh4'92QP*@qTa@c"TKD'*cpqED*!!lJBHAr,ZN`IZBEZc0NP*DQN +52&c2VN%jG8Q9&+dI&m#mp4Ji,4Qj4f"Q#9MF2E0p5m-9Y"D#**%bGD,,,,()G0T +!S$re#hi6T6Ih&G(ET"-[(")K4(J8fk'kMb[FDR@,1p'3!1rE`GV4Z"F0*cmJ2E` +m5SiH%4A1JDj$Ph2h'cFq(bp)FT`EqhG8#D4q#*+%(K0#aNAIIp+CERR6M)f-mLj +HYZGNreMiDK`*b&)FSk5ad)rr`2"h,X&DIT1A4J'THM+eDDGR'[SAiNZJaje'e"U +NdRQHJ!0-(e0aD!5FKHZDkE($XkY@SZhVp)B'#fG"-l08VM(e)(J,4l5+8STSG-F +jQ5Z#Y[YJjCCP2`KaM@!F4BU$BT%qUJYjc%4`6c6F'5**#ZA!ZQ#@3N(3[@`#h-h +2b,aPJ'Z+@%SU#r1YM4TM"U&'HIad@M-[(G'1@GAeK61[@61[lMJlLHIUZGR1hXb +@`T`1$BZ5&fXbm!lD9,#1(Jedk,YZ)KPcb+(V+SqR#hpjrKq@Dh9-G-D0A$V`49* +cpM"U(kMLLfB+0Va+[J(ZL5ZPm"Jrb9bfb)#+hU'mIU'lqr2N`)jYCDULMqEPTpN +hdArY2"A0-lPqS"$)9"5JZQ9XL)krL,mCie@![C,V3#a%3&XQKf[%0`,AR@i!M&I +K$`H4e8(&ra%mU51$j0-PS05Z)"@5@Dl3Tk-B0cJ8j`X!pD0G",8[FKXrQEp,RJ- +%mX,j#ap`dXe-l2aHU-,)6a*X$Zc9KqTld,0+JX93MMC"$N10h+3JciU,eYJd%Xl +1mVhENZhr#14MN!!YIcEBKlZ*B,h$bBCR*c5*#hmlA02*0CfV)kSh3e6RbZDq-T` +piQJI$rjGjU(ZII1J0%fiT582lYqUpcbqRl!HDY[%!-Xq60&89$FSAH!iK+SBdZa +a*@l$@AmDY2`Ah&2)M3AGZ@5R"KA'p*YF*lYXL[S,VFH0iX9HH'#,$DLbTUr)[ie +DCmFG)1-H2r1kkbi&Kim*HIU,R&-c9Lila!4h9R&15KjYqS+Pq3"rP2%1BeE(b%& +UBPS&j+Q+0)&X*'3CcQ[0(QVmZXp-`mN%F#VAT1&jCM+U&@&qN!"E2c*q[Tmf`KL +%IUp!cBU`-caFXUa'l$[ljSKfZ(*dqU)c(kI2hAl615BTE+k2k*60ibU)'+M+69f +&-V&[L20XjQEU8B#CD"rbb!,qZm(3!LP"Yj`F@(p[B@D83R$),(e1qAMc)qHNYNH +rNC@L*$Yil&6jkj`TbKkHT!&@)5Bj%L"YKU6YH1IDPTmc*E9Tk(MTkXN)*bB`h&' +Be2FNXEBAkISYE`jS()RYVITkEIqL-PlJ8,EfC1DDj1D!MC8FBIX0V0EIaAq*3Z! +cd"9ARf6(Mf@(2RCmSL1EMQ@UJ2Mp@B5*Rfc4&c5!1m*B5&+ZlaFR,E$#cAhc(cL +G!EPa#Tam!PHL1i6(jj5KDE(V81LGNAG,-f!La"+(b%d"!B9!TmDM'mlZNZ9T"ET +!!V+3!,``IMQT$'2qB+!N!Ie8-bUS@cd3YK@5Nj0c4aUe`ZrVDhkN3G89Q82lH%p +M4+DE*pANYl$"MaJkV`1ZF#L,aXAlT,XDYRDeQ4fa9(,h!rHCCY(!d*NAdY*ad(* +DF*`1Qd4KVk'ZLBh0A@3KIJC(+RfacV$V(VMebPZd-Tl*8!8aD6R'YQa5Te+kXG! +5'icCXarBV[Hiei"FdTjaj-HHIf(PE6U"r5V*-$,G1*`mScih$+p6dKbJmi1"l"r ++9ai-58-rXJmfXHSq4Xp9b5er$5-pG0++X5T"Im0ZAcY2e"RVFL,a))4AKpcb4G2 +GH2a1-q5MFh2Y!J,6C6%m0m4iZK5VUQ-(`aD42UC9U'"L+ka-aH4G-T!!2'A2KAY +mQ[N`VFTif3r%bc!4#bBlMYbM"DBirraQQYm[2j%r1J#Q&m98S5BV#2kqZdZm!"a +"&0%KSXHM@1DS+JilHX#Y9dj&bA'fcQL&8#U(JN$8'X")+$HI3Prb&Y692%a#bi+ +*kU13!)BebTcEBZLYJQL&)TP2LHKJPM2"mCXP(#VPXMZHK)CSk9EQ0ccKDZF!Aal +f[9-9%5&DM$(S99m3Gq1!5[*Bb+alQKSdqjQEdGcHjF8CBN)-!Je#fm1a%d6K,M" +bqb36M#a0X&LfE-(eRmAq@CHK[FQIR4iSeSGacdMJ(k%Fqr3lQH*53ePH@q8#EAh +93B`@RqH&ipI+"%KSCEBj,Y-hSXT,Uh)#$*1QYhdD,N8Ka`23fL!HPJEYm+RRq`4 +I$3&AI,PSAA-Z$pcb#m)8HN[*!3FGR%fE''HP9b%c8bC[FNa,059clANaC88[QTT +9P02F+A*pipeL,h*V3"CPr1UUkmfPMa!6TaYjEC`mHClhY*CK@Q1Eq#QE"CUp#G& +XIYe2a&VM*Mjed#bMFFEd590[qj`,3UIb+d+ik(%U6'"c!E1,jKV@lACXqSQXU"U +['%,%8KqM&HkLk,Sca,1C-6cpI*m4GpU$qNa3*NQ@9raqPQK1IEAb*hlFfBZYi5) +iEJUkh'p3U0CE"Ad68!X!PLkM,a!KpZ+(6JK[,Lbc6SaT1'%ZQXmH5BCDjEk0C0C +&G`F69F'd8L6Bmq-e9RrfG89iXl35r@G,QiHZ&9#1*DcFBC!!%KR(Zb"r"F)N4bZ +#iVV)R43'CbiK92M9lrhe'P(q+U"++iUH#H)b*SG0`0ZJ@K)FDR1,MpNb[bA$bPa +)`jRX*hm46ppU(k28YB[K,J$2Ue3(5N(!dZFe6reZ,eRYcE1j*`Qrr#2%d(MRH3d +p5lh!T"j5$CMZSYF3AhLBjBHY'LepUJE3iPfjFa@@%%Ia+Hl-X+5`CEifNr(DQ+G +RYCl!4J*q*!*Qq(5lGPhA)(p,A"@IBPph,+9reP-%kFQVrSaEbEd-6drj(e1PK0" +Hb"fMQFXNqmBpiF%*JY[2lAr+lpUqC3XVrl!$CdQV)F5#B6)peQ4mcM#jF`3)a"5 +$G5KLDkC)mGL*+f$0"FTcV1hKh5dP'BL4hV6111[3!Rek%D[-[N'1@QeH[-,`lT% +JkF!q68L2lTMENaY`L,UUerdmYUNKrBqXHUcIEB%EY#MJ-KGdi)aTLKQdZ8RJTHp +Y"IPF"p,Ji6N4RKeME"j%YPCp"GD%N4$"kdRdk%iKJEQEJJa),AeN92*-GjJS%&' +XP2%F%@hEBi00DBfD6(I6+hqY0JqZF-rjP(rN8BIQ'k-chD-M@Xc%8Fk%"32&Ul& +9%CDTmSS&1Jjl@0*P48Tq(k5j,*3*r)&e23jU&L,PXEkZ#IMYjHB5aVc$"cF)V+F +QXmQifc+XEUiDMD0beL$DL!kh-5lM&b*CCXbFDC8!RYM"Y`"#*d*Qjd@['mKfNSj +'2N0N9!TNF`e8VAJZQQ,,Z(rN!l`$hA!0*)GhZpS1G&dBak5#j-"8CA&@j'GHq5j +Z-f$jcZKmVq`jPK$r4kiZe%-6[Me5*S,bJVieUUHID*jr60A+ia,!2")FM2E'1mI +$mK*C1*rCZ,AK-"lpAQ+UFaU$rQ8mk"(,aCB$3*&#*Q3&F1*)cLL[AFj'4[#lRpa +@hba3GCl1ic+0RUSKb+9Ge2P13QTEeE)f![3[lR6e%RqlIL$YY58*FIH!TX3MZ%+ +ZT8E*YPB'ISj5Z6,I",eFi"!mZ)dkL,(@a2'8-qXNh!R'Rbd&@6U1VAZNZP8#L0% +IDkBXf2Q09dScFadjZ4&ic!4S"h'Q6$Yqr4Y'iT!!V[`VaT%1P3bCc#8B&AhCAH` +#ZIMZZ)C8N6*GL8B-ISYI9eM*eq,S)26SIA@9N!$rQiZ5%kfi2'dqcP,NKH!)$P2 +ifcl%FEh4+RbaB!"Fr8hVr,edRKEhN4#ipAaRD9Eqk099#!iYY*!!'d!'IfBhG`X +QrVr5)1lkHEq#)NbfC432Hf*3U,"@8&YrrpK(jUdZ!hh'5`q"`p@T`[5qF9!6&Hp +p*D-I((jF,A8I8C,fi%ZR*%k5CQB&DQe[blZ'RI1[IlNpUlmcGl8j(q0m&4PVK"e +NVdpaC00I%AN0q'Z"cY5`jPTY("#R+k42#khi5(maU"U,19r"1`hcf"9YCT*L,Y* +kkpdN6EHTKC9,fZ$FU"BhC$DYIQ#3!,qPIYh1)c3JJmrPHUEL'1)#U9HdMKP(e)T +Pfa!rlr*C1HfQZJia"pBdDL*Z%@00Xc2E6@5f55Yl0lfaR1'fU$hpZ2Vkh&Kk(Fh +mqP1)2Bf'Qh"8a0QE0pQlqDlme%3FHA2F`UTkjmd52&10JC!!(hhV)aSUIE`kS'` +DjA'Ca0`(UDqJ4%lm9E&4j@*4#*rLM"E24A+3!1X'qNpebXVj9K'EqQDXcY%rm0B +4KKmHrb@G1))-6Vm#jle"EK#EHHmX2LHc2mKNF21mXYHfDBL3!-Bc$,SHf[A1pNr +FRF0')`U94#*(rV8'T*m8CNSj3+a$JZ"%b)#($2T!MhKIDSAY#aJ3`3idqkN*Y&* +FXT!!qH(Xj8SKarTpe*iHcApZ#6ILPE@NMmfhFB&liCcjEdI0iNL&0YBC2`MH,Rj +bAkAKbpL,MR+i+chEhDBiT86Ue-D,Ce8iX$bNBB4%4dbY8l[FqdVacTjT13iNADj +Z"(1X+L"FLR-%FdSi2r)YFmGb'PbcSLd82f`!K38A4MXH@P9XrZ6CqQ,FUJJr&#Y +[1I,jeb"IKf33Q$[R99ChQ5%YS`)NN!!dcKfPe,`bP*A35AhZj&h5QVPP2p0F'0r +AQEXCPHhqaI9FP9*GC)k)$qk-+Pi!HT6[hh(0hqFp2IIjpePJ!llX,@UV)&Qk`9) +cj8M0rpJN!XElGm8#5PBmr&`MSaRj*0BHZ9F$4lVJhaKr$,9bH6)fNSTQl0cqh&V +-U,c"FE2f"%Gj)kli+fcDP2*aX*!!@5X5NkeGi@)'P`,S32Add9PMk&fc'Ihm5Ua +a(+[f[ZF)A&Tp1XSq#B58h"KYk$frZDc,BK@CG[eQ@Z5P`fYJ*aak+Pd&Z8jl8)6 +cJQh3blK(9lkD[f(CaXZk&M$CF@8!-T3)AT)-59#5D6kVIL2Ta92+'d3-EE'FQDp +Z8[GjY"XZeT-"i!*(DEHe[MC8-6&[VPb(Ifr2ZVd(6L#86p$HV1[21fLfRUjd9bC +'YPpY!0CmpD[8IqVMJp(hdQMbH[i)lBV[pGdMcL6(0"`6Deee(eQN2CYha)IIe4m +B*4p6`K'(CDp3*N05&LMDA+llPdD$RSeP)c[QGPQbPXP9"0Jbb8p*Zh8PI%jFI!( +P'0[k'X`VBXjB9@FMSRZcH8DjqUAR@R504f+h#l&BbP+qU'kNUJXA6#mN8j3j-5U ++ILIBRfI'6lQ@XA2qrl%0,&9q3`lVNY+6[k3eEJ)5k5pP60mqjXXM`a3"R`@B5,( +h22FUV'%*-6%jdGGdM"em&hp6XU9d3Qj2jUZr8)[fP*+Hc%G[PCUPdVhaY"Vq*Z6 +)D!-V2TpQQbfa*E%Fr'6E"%NNYf$dM*5RXXSVUiI5AM2Hk3JQG'j1ea1LGf+l(L2 +FhK!Q5XbTmmq"[JT#'3#q92*VdmCAr$#RP*!!ZQA4F9AD4cl@P4BNNMcarCJ@1G` +2a6N4L2"Hd(#$+L@*2&0Q1BDTlEVF9@mFQ@)V*0V8R@4TJp+,RYh[I)YZd3'N938 +i&ibBD-J&6!%T'',Qh`#YE8LMrHIE8&2-HrqIlQFBTNK9im30#r0NEbYTl&S!DBk +fbZR1,epCDGTPX9lG,!%mdGrIR)`cRR$11m&M0KrF2X%6G-j*cC%0'Y4(hA"Q+%l +q`@2YF`S-8k"aX,He-Vjj(mSmAY3D*3PE,F4J`hA8LQ%CF"l$Ldf5K'(8E-Xh[@i +qBVZ@a[R%q5&!"lNK"GCXRhifED+5486@E%XHAiiQLScLh*UF$6SJHTM!)V&+BPG +aNM#@S6DD&hii10c9CZSY'+eTp`0IP5NGlQU#Q&2jp*1V`aQ1j14F3Yarc%4q"9Z +hkRI(U1DVFfqf6MRm'cmk!`KZj@-0aPTr48)%KBel8fac-h5[kmU5QYE[le$C-`j +8&4JAaG33j`-,(29TPVjGY&$aa-(cT8@qQMrAfQ1'Ni`SrQFU4l0F8LR$HD4BQXA +VCSPFr0'J*9P')e!'!d,CB18RULLc'kclZb)aGM$GkCDp2iF9-0*Cp3LDDLUXGkX +'"MkaXr(jrFMb2rq&*$UM+mbX*"3!U3NS(YaT%,V(SdL8CT[5aDHh1N`YFp4,`N5 +c,J$V1iTLj-Y%N!"26qGI@4!c[,Tk9(fkK@bI6r6I50j2eYQHLH43TjTe0h3)IB- +QkRPG9@RrXH#lhMEcGpKk(D&%#[bTQHEUAi(E3V1e*L8bR94KNF%EGa%Z@KU0!%K ++9M[Q@0UrZc0EdVfLG4XEjc6jbBYeU8!8Bb$JDpCCjHNAIh1Bhm%UKm!D*fG+IX[ +*Xfr)2YC,ji5IVb6h2VdBj,rX8qQYPIRTCmbfd[822j%5++P*'6+dj9a*2QSrP-6 +im#IkcDAa$4F89`PkJbhTYpcH[pYNLR'0KYCC*HmMZGXS3'aI#(+*(@QFe&0Z&,k +i2PrfJmFDJjf3!,mS03($9d5f6ciFiSfZ(%FT61*Sj'e3YVUeT`,&(b&S$2'-eXU +)[ra5LVk"ZX!kS9jh'd*GhNTcS+C4*U"H+h5&p[5fe4FaMiq*Crf)IIim&FddV2Y +KG''l#2EY-kH@@PMD0`CXY5N8DqE$Y(`U5a[@i*IBlbK%HCC"(k&&eF*A3j8Zr6E +`5J$9b,Q8EaAi-NHFNBDCJN)PLak-e5q2Y&b2hXK(33cSaLDh*d-UX3UN*a`GhBf +P4@S'6(LM[Da1d#DlPA4[XeeeAXC[F2U0%ZK-k@RSQ99AI*a15!BdU2"'Vp-HhLX +Qi6q8dG`#1DP,q22L[69)EiU%qG3XYaR2!R'XZNEi+@XC80b!`fGU6@%R+*q40N" +hFUqG`-)*Hjr!6AFTK81*pcTZV3HQM3e@jB2dmT)kM%Upk#UhH2beN!$UA+E[j#P +E$28aaJ+hKM32'q1LF4AaGa@"(elE%2#VP!!0i[!(U`f&TLcLhAZ#D6bYUHiL%Qq +B9)NiHN"5)QDB*$!F$L"TGaTpAlUS!%-VdYKT5j[Vp'd[r320IdmbK*GHG,@BKqf +L4@iqQh68!JHMkQ33DaT&Q&T9[N*-F8ICh*NbKp#CH%3N!G`C$*aKlUQ&QUm8I!V +#F5BKilfiR$LD,C!!pBhI6R&#B9$KIb6D"dk2hDi4E",EqGBKdFfYJ@PF,r'XALT +@A@V*G$kpLL1B-$0Lfd-QXV0dlF#AcdC1`lPfC4lDTjiS%h$dp0ejYf6iX[3mdCc +dPEIpV[(@UYJUM'jGr#Z*"PE-4bXS&a2m+M*#10B2'CH0[0`30l5,cGqR"29Ec6V +lj8$JMGd(ED!DmSAAFK&,K`@FVH9e"-f)&ATrD5FX1ZYLd#BU9,iImU-Kdm+Rl+` +[46Tp,+P%TPIUeTF-rhH$U%VXqTEB2fSbAAmiA%#&THG$MF$Q9U`cFmAi9Nb3!,K +5la"#K@T'NC'&lXRHkL,i)CEI1qT4-G6KUa,HG#8q$KR&Mj&,k$`j'SUbXeAYL"a +PhMKlNmkMHmT+qhpG$kV`HD2`%HA(1@#P4Vm@5HZ(#ccdXpNRm(a69-h09RZfNA2 +Y4"Caad$*qYah8Kr%U'iA&fcE+T0YUSr$LS4DQdD!DUEDml6Ta)FGlG6ep[lX2ql +i4b9h5j@f)1GYShX"Vm+RKAjG,ck)rMVc"r&*'d@a44K&fY@$XLCG+YpX)E5p"!Q +(`AH+GkR5*+9'rTMFqqh!hQ8DZrZK,Yh*!CqekSSp&+TPkU)J)ZCAkDa"C-$H8rP +,QC6I%FrQ8kIpJ+*JE1#mC6cp)CG)`#bD2J9,+[[$T"F$A**IHaZX)RS[(BqSq$p +TXbrJbQ)bRlT*Fi'AC%4q()Q&VC[Kp28Yr4,&$2I5$K!R"3H)(*6HNFaH@jLGMG[ +$U0YI'r@G$2Er('1eYh3rqm1edpUQ0PBEIIMa"bkrQ%F9,G3&djFU-q4hAq2CMKP +jqbFJJ*CD4*Lci)`c4+NaJrcQPmih1*jpT!A2"(pljHP0BdYImr+Z'(m,-&IcDIN +$G"(6BI#YRM3mR(i#LRT)BrMEpHD#rFD8621QQ6ZRI8e*qfH"NQmGXZ"m,@h`9G8 +k3LN@LSED*%$,HP-`5@-e!lk%$be"C4c+@U&SLrRM!-$19U'k1#LG!JIhq-Km(6J +0md(B8DD[B!-l&E09b208H,ldK4@A"qZPapHjIHjHDLkErV6qL8#DjfDJ(#[#Ed( +34N)%"qT6GcE1HMYIl5Cf1K*m3"lp'BK&2eYI%"4eHelV!Nc2MUKLk9'80%@l3'e +k"ihFR4Q+AGfd`cDG[4cr)"$6NdAQl*!!T#Rm@EMdiF0FRlecpjE2S[@DdQ)Uf0L +aS"l&"N@halU`FIZ91HH'1hS#PEf,!62@I%GCB[&d`NqJm-9+GbZX($'M(,dVDXP +A(Y*h`S)E,lXC"Q(Xl5#''0FQ3l9(-k5jRmbp0Kc2#44p'N3Yfp#GZ(K2Q-B90Id +N+$Y'-0"[GK-(F6k!q5XjjRN%kGQ-@0MkMD,F`6-#8DMH1Ji9jJH0-(3QIQ*QZqc +P",2BfT3)#ifq+k#Y1T2qTlI0il)eSh@rjHHp%&DX,3eU[+&)3AFDCSN+6G5YHX( +CR6%PM*%rH4Qa52(cR5*MSN'8c[,(P!YM"2-6IE%d!HA,PA)IqMQL@'%Vl8)r0(- +aV1iaJb0YK[&Cdj!!--U&I&F!fN(hr5eB8TC-8U`BAq9X1IPb'pQHHNql6`PGPJp +ieR'$)GKZA#Te,M%l6mHek%cr,JL)iU5rHMb-[qiPG*1AHk6Qb&)Zl%6AJ,TpPKH +Bb$cbc'-BN!"@YR%&m1'`c0BiFp$UlB[rZH(mT12YjN&X&KeCh*1(-6il8I*CCMh +@U1MaSdJ!fF`XT)"hZ-+M"M0EGA[$3apMDkr#TQRVCraS$bcP9AI'V8$*"bC%0Q3 +VJ6+@#2IT0NlY""hd1$HK0Qa)$Y5Q4,2MSM(5C-TH!@Sk$lc(Saf5$U4`5C@-fdd +"+aI3(f,d9P$jdD[5`cSU@5ZMXmIeYL!G-Lp&Vj,Bq-SBRI0STZ4q+-%QeLrVe4* +A+hSajjaRHp3i''RLf035d(qQB9A2G*M5%m'IM%f+qGEZX5IPlALdY2@Lf&,EhrE +FVZLLS+Rf-"4#e+-kZa"l8!D0h'lcc5B$h)LTFVJ2[#0@&20JN5k*aiXINc0k$GM +&YR2amQ,)r,318km!P!F+B6Fm&UkqL$)q[pBXm#0PG-qC51$ZfqVE+fECrELQ8V! +Ca&`(UD[8b'cAA6!PlP19e(8%Ep1BkEdhi$033JQTMXKHlL9k`l3B0p+KPrpiNC- +)PjL-N@bh0')5GG+$Z4#[SDZ[#EZ$hfR#)KZ!f$JJ%D"HrUPSXZdfh+65a3CCH`r +)4Zj(p3F66bf-8CA+dX52qQ5#MFYRY[%[HZVBQ6a[51eGPia,1eRVqElB2$S0CXD +6VHNZHcie#@UV5V4jSq3q"kS@4$5`S"mP(M1Rbq&+HE8k"8L"AIYB`8K2LU`Cl1' +8j-YhGa1*19h0H3a+p"BIml[Cq#"F"UPfSGQIN6JTiYVYRZ`@VkN"S$4CcdhA(RP +i#3bk2*J4QG6iM5@VZSBY5Me9aC-)pQCLeZ2&Q9,0Rb1GrLj3&'DV%!5*6hC!+Y& +%rGS[e2+"6-SSk-Z92#APC18A[E"bqr)phe!R@VPU[XppDmLC!S9f&bR[dFpapEC +kPTTViEG+p-96FGmD&T8Lib3a0b2i'Dm3K!66Q#`@rPXBj+H9)qCX`"SPYH41j4J +FPeI!I%&bJrkL$ZH!L)aCSbHX%$4LiQl-33`JfNNKDfk%pS66FX`,$,S4!kh51CU +r,"9p#Vam)J,)dGBTI%cAi+@Ae[b`Y$(5dP'TBCMLB$&IeN@[mlj5T!Z(QpL'I4j +cGUcaIQklG*,Ldbl#``#f+e3[cq-5CASklPXY9B'5a#dp`'#KhR5`DBaKqU6f!@, +'0dC6[95$Ubqc[[8*NNTj&&149d+TkEil'Z9%@GFqVr+cM&Y8IDm[UN3aQ[d@d+m +4)@,H+ZMR!9D1)'1qBUY`Zpeq1CX"JLN&K*R#PjqClAeZe1$k94["&RXqJ@E5$9A +J&Zh6e8I[Q(eDYk1pj@GYLRbReTKk!@(H$lR'B68`ajajPVkAl&Y"@'r+$'b)3`f +"D+$`Q!-@Q,dkN@&YEfmmHCPq-mBFVKGN)5Ic4)LJi)C%L4cB)XM,hSr@1NFL@mI +NT#RY[NjdL'1,ke!&"!P(eH1Ua9!#T+@a!)UA$kl8UTH3!#8rB,fUqN-"aT,B#mU ++)MYcmZri-2PTkBKc!f(M!F6BL-pbGMF482DVNQjM5%1SapjDJZ-5&@&h'D9H8be +)`)a-Vb+(a&e&1iFBZpEf8KJ`Rr''"V%61if)AN3mfVX*Xp(i*m8i)&j0SDh3-qR +pGa*-*cUr!6DI(293&B8q!SbG)TpedIeqPDm*E(hFpR6%IT!!8qi[%X%ZMda)))c +$GNlAKmXE`&('6)A0j3k"Q8+h6FDBA0k3!!ZJZF-mVV'V8$%C[XBV`FNb5!a4F*! +!GVHceQ#+r'9"3Y&8dU2[)Z)QXGKb-Z5"Zj'BYB5B`%ZbIN0DC%2ir#d*&95EMI9 +)r!eiVLmkC-MBebd6%%I0fe2Z"6R,dHXK+IaQa!c+m+Y%MpKr!ck@L#HQmQa9Nfr +8f4LfQ,Dl(-A)q`#RQ6XH!BIImRDIUmGcGE)#mc`@3k0K&1)f39NH0h'JITFHj`% +kUTa6ZYe`i49Si4$Fh5ec`*!!kkkCl4SDM)X*""P21l0qXP@Spk0J-`T%9T(*e36 +EUi%1*UlDU`SHDfBYZ%Em@*elXabrXiYRl4Y3U3i@3f-*Z3q#[h`aVm4b[,P,+1$ +lR)UVYpL#%fN*a(X0+li9B4Pm*hG!TC!%!3!!-!"!!*!*!3$F!*!(cJ!!!e[rN!3 +!N!UPN!3"!!!e!!#fm8lcY[&1m`#3!mi!!55!!*!$FJ!&J(J!N!j*BfpZ$3!"%Le +TBfpZ68&$8d!!N!q!!*!*!HB!N!1!!*!%$`"#`G6Klm3JH"k5kcXLNd1@28i@a86 +FZS%c$NZGQJUSH4bHKqI!B10G(MDil@6dI,-(Up5RBpA#Y*[,Jc6ZVdl(MB8G2P2 +0'@HQ+8l@&,%cFpZ@ZdA2CRZ(blTpfJr'bBN59qAPP+-4lhGC8A%HlCU(TqTMVF- +L#$JH*!8Lje0B!+@3"!%!!$!!3!#3#3%MQ3#3"h)!!$k*rj!%!*!+C@8!!!%!!!' +AJ!!"PS!!!!9,!*$c$!!J!!J!SJ%F!)"993#3!``!+!!S!+i"6J#e998!N!--!#! +!#!#L!4`!JP99!*!$$!"L!*)!m!'B!)9993#3!``!4J#Q!,S"eJ#'998!N!--!#J +!+!"e!6`!Ke99!*!$$J!S!#J!`J'N!)K995J+!*!$$!!S!#J!P!%5!J"993#3!`` +!+!!S!)d"&`)"998!N!--!#J!+!#f!4`%!999!*!$@J!"!*!&A3"`!(%!V!3#6dX +!N!G+!&8"%iJk8fpbFRNZ)#"*ER0dB@aXBA4TEfiJBf&Z)'pZE(NJBQ8JF'9bCQp +bE@9N)'pZ)%K'8b"fEfaeE@9c,J#3!eS!!3#3"9d!F!"a!+`%!Np,!*!(5J"9!41 +)1P4SC5"QD@aP)0*H-0-JE@&j)'*P)'4KE@&RC@3Z)#"3E'9KFf8JGA0P)'Pd)(G +TG'JJBf&eG'P[ELi!N!05!!%!N!9Y!'B!J3#L"!*25`#3"33!5!"R!31)-P0[FR* +j,#"LGA3JB5"NDA0V)(*PE'&dC@3JCA*bEh)J+&i`+5"SBA-JEf0MGA*bC@3Z!*! +$I8&%3e)$!!"q$9-+Ni3"Sfd!l!Yb!l5b-LXVieY0hP[[D[HQELEAJ$%!3!-!N!1 +kY3b!!!PT+[lJ!985,2Y+b&X1iq9cZS94MV)rcirrVL!j0k`Dq"(+KM9jKQ+MCf[ +`V&ir"HlX#m#`U3BL1%aA2VhVbkfM'32&(&P,'cJ,!*!$6!!#!*!&-3"R!%8!V33 +%8A9TG!#3"3S!8!!F!4#)'P9Z8h4eCQCTEQFJGf&c)(0eBf0PFh0QG@`K!*!&#!! +1!#J!,U!#!!%!N!28384$8J-!!4)08`UE*!!lLSL+&Fm@d(1X4'`3p5`rIcrXejf +rjql1$+GBf'%P+PL&999LjEra",'U"3ZbC6Y1)2Q3!"m"9#5BqM@mKDIGaGRG6G, +)HT+pI4mZ3pc&PmHP#aEjM6KA6jAe#b3m5Sk53ElSG,A`G'S9QL)q"HC1abaeLk9 +cJ@A[I"3FZ$A+c+Ce3%m()3a-9j4CR+h"Zf9c)KIFIJai(r!m3+*2iaUXL26-$cG +j+&$EM-KaUkHFa@0E8ER-cGETJDZ80pr*q`cTre6rb@d!N!4Z!!%!N!9S!(S!I!# +f"!*25`#3"dJ!AJ%PL%j6EfeP)'PdC@ec)(GPFQ8JFfYTF("PC#"LC@0KGA0P)(4 +SCANJBA*P)'j[G#"cGA"`Eh*dC@3JBRNJG'KTFb"cC@aQ,@9iG(*KBh4[FLi!N!1 +T384$8J-!!,B08`UM!J,[j!5Gr91a$mmfHp2E9(6Bajb+k03*LRTfFql'k6J3$a8 +lE'G9#9C9N!-KhQd6UrS"#j)2B)QrqC!!!Al+C$IA*4T0h,,0C$41)9c$S80X0Nh +%l40&LQIS0$'"1Rme"P-qaQ1QT*,p22dS82pVc)-l2TG!Iei&[QEeiPFKRRa,frh +ZGP$pLG-c6DU+j6&M59JZp!+6*N%5EamGV!)!N!-k!!%!N!93!&N!C!#6"!*25`# +3"3-!4!")!1L)'94SDA-JBA*MD'PfC5"TFb"NB@eKCf9N,L!!N!4)!!%!N!9(!&S +!@`#8"!*25`#3"3)!43!a!1L)*eP[G5"SBACP)'9ZG'9bC@3JB@iJD@jMEh*bC@0 +d)("KFh0hEh*N,J#3"")!N!ZH!9j!!J2S!*!$I!!"!*!&D3"M!(d!R`3#6dX!N!F +p!'!!miKF9'KPFQ8JDA-JEQpd)'9ZEh9RD#"bEfpY)'pZ)0*H-0-JG'mJBfpZG'P +ZG@8J9@j6G(9QCQPZCbiJ)%&Z)'&NC'PdD@pZB@`JAM%JBRPdCA-JBA*P)'jPC@4 +PC#i!N!-H!'i!KJ$H!H3!"3#3#!%&"P0dBA4eF`#3"KJ!0!!8!0)"FJ!"!3!"!*! +&!qJ!N!18!!!"(d&%3e)$!!6Q$9-+j#)!hhB$MR'R6XAbV0j%XHBmX)IiV0j8,+H +JL(G6Cr8c`3!G"L,18R4@$cZXm[rIpjiFhYRYG&J##k#MF"NjQKYpM08c$@fcB&c +B,DfDBBi[Q8@'KZhRa2eh1KGblU3+QbXZmrjdJl+K'E8"E#iG,'U!L9ATB$8iH") +""%H4JmH*JiXFe$A2[B2Y#,$K`U`5"0`DJf#cY2MX*ChTT*3S[2"4)pjUZHHr$Vc +5*(XM!dUL`bYl#@3++G+qArAV)0Jeii&kIZM)c)ei1q,`DdZCb"5#5`TS9m8NY6& +2mINh23-MRM'-lh6%63iY205!1aPr01FI1[ikDb1j$**hNU$CKaEqDXNA6ICm`&p +cThAf4L+8'Sm@!!!(#N&%3e)$!!`S$Pd,V))N2ZS-hqrZ1!QK5SG3'UP4i34(3(P +I"fEcS0Q#K"92C$K@P-9HE6bcNT,DRQeBDc[aqqT$D#eNV8)&DdiZN!#%#AZ,hfp +er$l&pI[)`U"CYD61l#ke%eX8NM![bE+N5i83d[Fl[Hr%iYTckrF($HIR0$%"*$3 +M04p'j!kP$U6rDXM2CJM"X&PTH0km2Rc"[HG&*i[#(f(pFTmm#RB-&ck*PBNHVS0 +Ka)H%LDfKbLLS1)"iAb3)Jc1%ji')q4!C1e$+EV!VUAf-f1i`r41*8jqrIEb"rEc +klR#mrrCRJq1ZiMrE`$GKa94jU6lIZC+pD562CdmRci59Rbk'XX9!h3"XQ6cJqBA +i*cH0kBALkBGRaJ2-hYTYaHF0X#p)F@%Qc[1G#a"XIL%ELH@5#bPrb&FN!i1YP[[ +jlmh%-jAekAJS-Tbl-E)iZ1NUIe-VBQ88rJ9pHaHLJ@Eh`JAEM3p+f0FSl%E'6qC +a%KQ%2iP,fai+q-jH!bq+%HV0m$2&U`*Z8DmCK6Fa4b)0ia2aZ@G9,ZE96jqF'A+ +Ij$iHhQhJ'jH5ilPL0P@@RLYfq+@YAja2bVlDmpZP*2I,Z@h,"(a8`Dpi+2Y+*E` +HZ4D#c&!IJeYh1f)'[V4[2$Rj`rR3DRRZZ4P-krfTLRlUKe(i$rbX&E"H4f%A%L* +8[*bH")%13M,hk!)G4+,3$D[JBV+Bjf8aYbL,qSpN%HGN)5K8P&!iK!STh+EU4DT +8TGX$6l2Np#Xa@8ElR,`XQErQ'&P+VqH5XPaq[HHa,'[HLHib-$qZ-$#P2h3B[-M +XF"J%MIj%-2JJ0p8U(mB,prl%JeVVm1,)AeEZm%SE*X-`5BE*-dbU,YN'[m&EE"B +'2LhLq,L`#pHl0G5RHl&m3iqUh@40JD9(e*HQ86pSY4)kbiIU#Uj-Ef"*EcRJ+"8 +ZAeLlS$BFA6-Mk@jidB4mU*AB2SM"$YV@c)e6ZP[!58"@0Z$l&VH@lU8)$TUqSJ, +ad0G!-NIYF!j!F*SLDT[G(%-YY1+4d3cZ'8#`BSaZ+d%dCmC1$q(@5Y0rN`q4-!- +1ha'[$Y%FkIYAp)0PY8QXb)b)T$fUCG50fMlBQN0K$6RbLSHeq,iNERPcAVd2Qe9 +[[+(EK2lK4,8$e9plc0*lJPa-QD5UA,mZQbUjH0&"TCi'BkrrbN%mb,j!0r3@J3l +Q8k*c-HC8KkQMJU2r2aJGiYI$JP0PlehjamNGSp#DZrFrd!Vk!ik0+iAq'Y,8GQJ +8b+FSE'$8UEldrFcdS3m&(mk+)&3YAHAqXNrYkrZ8F[9L`#PmMI6H+Hh-((8Lkjh +DFB"S&TqEeBi0Ud!1!(&rJpk4f@N&#pS'J'H20CY"b341$fQhhDmiND1JaHNQ)bk +IkK@TGT&k$DIBHaEYcql,N!#4DFY,JhDhiZVlbQI`3@$8hN,c!hH0%aR+R08FMJh +h@ECjV+P0"-Zd6F35M*55`k6eCJhMU!Pad[(@4`i-qC2)FY#qJMUR`YdCfbMk1+r +3R&+J)(jr5rhl5'YA@SKK9%!H!r4H%bbXF$[d"pU$B5U'iClN)J&HiL#@#!(!L2q +jUqG!m2IZ$Cj[E,49[EIkj1P%RrrplilrR[f1Drp0IhAHNmemXqPLE,dL6N2c[MT +mebIael4Xb*KF8MHPb-KfkFhFFMMC`MmUKV)T*T'3!)2Ae6fjaI9)fU+)ij)8%Ai +RFG(NYp%@hXk%(Q8Bbcj6m(CIRC5SP#5r$ZF!$h4)A#jj'S*I+SED&@CfhK6FpVL +ZPQrXXH96Uf02NrfU[bF5ljA5R4hMrU$R8LQ8U)lQ'fK+'"6Di#a18cl$iNlVlJp ++rKN84R%G82lDSS,c203D9B&$eBHXGIk'SJb-+l(rfG(,Xj!!DEJPcY04,9,L6'k +QcY'!L6Zfbj2jCblQ4rRY%feAMe6hl#aI[L&2l*K[(6A"U@*M-"M+KMFVMAcGZp+ +Y@52A'"`acI,B`SqD$mS[&rh"B1df%Ajb5p*qEZ6m`5(6P)mYmKN@+"XUcXl6Z!R +*AdRCJ'RkYmE9`DZf)5QrkCU0"KZBYS6dV(%l0b3&6'8"2YK)i5r%+M)`#)5pZK+ +HQ)46m[i,Y&`!4QcYX%5[kfc2IK"GY2f`6%#!Z-*dZ5E6YM'#C"Jbl+%p0VTKKR$ +,KbILh%H2ldDLRIm$L1&i+'1D)BP#Aip8rh[I9rq05RFMf,P*YLZeYS1hZDV-RSR +eYqdQ+T!!rFbi0"[YfR'cUAf6'*A&PNUqjeSS*)5cKP5GFBQ$Lem4K9,T2`'9dfT +#+q'86&fLP-,`J3K(+Hi(,C@*R(maa1K#99,Uf&MeUrA*%8pADE*328BDZ%I9arQ +fr(+S+E`FXbE0J9i'#D503$%DUN3FZMEEJ3Uc`S,"3PUK'qV+ecpqDb)@pld!!!' +e384$8J-!!XJ093Z8SX6XB342CpAGe5'%+QYY#3bBY"a*C-$N"+Jb1CP)"J%Lhk' +N*4q6$L8h((P&ILE*QIaYB-%fhNkIDAH&K%Nb%pNN$FJRfl0MlLe$r14lMUkjBj1 +#Qf1pV+J3!qd-q")[6T!!2&(NN!$XH$VqIIf-lF$JY8&`Z,`m2Kl(N!"fG26m(+L +c@!dY,VZ@Jq32[ecHi',DFQR`2$R2R"FmEhPV5TS[8GIj4FMFPUJN(S$krrcHmXj +TT(LK4Sf51[S8m0FeEMVMk6SYm6VJhLGTV1lRVZZ"EaEFUUI2-L@THq[lVS32kTf +Q[&34P4,qR6LH8leTcUSC90r2)#jHlq(PSQ5$"LU+0r@-Q$28$kPkq[BSR&*1dKE +`$GP@`m[M1pi1h+5UIP(#Y$f["YEirkXd45,c*elIF+LUHqKZJ#aQ&Jj&V0F0QfV +hJ%U,iK)b8Rj5bF3(R&Ge&@C#A#EdNS1e+6!l+jT"0GNjAjJ,"X-fS4558*PXpZT +"@GPQ4BRK,$U&MK11kK6e3me$R&PmRZBeK3+'[KCeKV"#+i`Erm##D%'$C3Y&%VF +INEJ[pV`2cNF!!!'e384$8J-!![3093[FXX#Y$`3R*l4pR,E+,9cS9G6V%TrE2UV +LrRe&k`k+#h8laU81%*IMeD[KZ&rGYQdIS"8K,pp,FV&4FGX(#qXa#P`NCE4GVrb +Ad[T#VfM,r3Re*3ecY$mEP0C#pVha3DjUN!"UKaJA-eeFRekm(d!DYF'LjIVki@' +lV9ff%4XfTid[`MqGTkrIr-H08Z2RQYdRFfCm%reVr)q5ZeS&TQ!EF&3"+6i#@"P +d!%iQbLiQ6TQbP$"D+p3#T3k[%+J&a`QB&HN9`e%"!i@TRSpq41E'-KF*+efY3YX +Idm(#Tb4#d[D[L[pkkf4+c-ND!HN5@EpmG)mZV-J)Iq[a,UXa*kPPGerLQap2iR2 +K)Nh92bG[iR,lp(Y)jfcaeb8Hha*bcRH98B[[d(Y'VT5,%hmEqZYhrMc'4hLLD&Y +QKeplle"Flhfm[)H#CTR`3'M"adK5D0hlB4H60&a8F401Y5HehLpe#)T8"HB1aEI +S)*JDH%-bDfGNB0V9N!!SjLN38TkRF"(GN!!D('BaRVX@iB#Rb*UTJhNT&Z612U1 +%V%JKlaXIpiKYGiKCQC!!pPcYm43#!!!"LN&%3e)$!!+d$98,R"6&p9%!hb4j54V +AQQc[Y9QY`(p1RFT8hqPl9Ri9f!Um#Q`&!,j@MEDeZEP[lT*ee`S-%pN4!cN3c9F +'jrI-mC-IZ6ph6qa+GR0XIaXS4q,T@IMkII8#j)ZL-j,2I"hr[[dG9f5[$5+hcl& +C-MEhRLRXdbr01c3U2@pDXFKTGZ(Fmkd+U6kTDI&,cPa2DK3HSITrrZMjP+3b2#K +9DT5&AV+qfqSU!kjPN8RAV,ZAk&6EX#`0HPbi&UGEc#@dD@[,*"r&Na5l5B6%*2m +Zh-m89c%6-8#Y$3"@1i0ALf%+#b3%GfQXKA05lq9S`EPBLAj8Eq4&D"r!(S2N50# +kmM&4LfJ6UL#,pS82Ei#*`@k&G+U'aeJmj2p$adlZ)&Le4LV)+(D3!!#09FG(9'3 +)pJFp,$-Y'EP2#-b+Hr+4+K!XLeb+8j!!Q(9`F8!kMGP!SAJ2#fMEM0Id#YU*1Sl +5`QdHYK!+Q1GUP3%(P8GKhIi2'&60&Kak'&+irSc%krLeDhBd!J!!"$0"4%05!`! +'G`e9$8-L%K(QAQi3C#dC4'Vb4#3,%&QVTLBRYcf,M1"fjmK*Yc06mTPrGlr[fiS +m'pr-Yl9!NYA1l-RN5GLq1j-4NZ9@j)QXb1mIN6q6RmQmfGCf%8N@%l)h,FNL+%$ +L"rp1@BD49%3iU!XlH1)RGL%XdS$Y8-@K&RB5AKr2MQN-Tdqr@5Tb%b2*lEeNEa2 +deYr0KTa,b#P((lQrdKDbpHCeqFBN#8XTDGMHT"F9Nj*A@5m3r1$*iF)A(Ra+`bC +Sd@*%bYh0[UE$mLb8Z8NZL1FKb4cpaH#,'S2Z2"A0G593mh5B(ilNbH!U(HDq*03 +V2L&LN!#Glm-GLj)350pE&JffVadV0j9c-)PcYTmmT-U'cCf2[lLr"Zb,Dr,j*UQ +J&eL!@HMeXIT'U5KXK+Zi)G(%4'NH4P'P*SBS*l2%Ke)*Td69NE&*%bSLi2'$"P$ +iBJ#e%QfCd)!P0"&UFSY0QF0BUD3IT`bXGDL,fZ$B!U8fSh08@--BYZrp*)$#,J2 +%1@+BZ'k&r-qa*h(XSZeGPi*0bi'TkX2@JbVR0)ahG0E&J(3EJ`[@YV@,-D*-cb( +Q-Y`6mPcZfjMcBMp"cGLljK3Rb&aVTMai@-PP[RfUT+62k1U0klXYd-Kcq8@f`RZ +!4-@X%K,E)89)*H!)2HGQk+!L4L(61rDKE[-93T%lT4&h#Yj6*Gq@)$NpfZfT-bI +Q[*a$ZHi9U@$-fpTGbR)EqIHh6JN-ELhIr*F2iT-R9S%)rHb*!9X*2'JQcVG5aT+ +bk)"66"T!8Hh@RKiMNZDb1RCPrpLBBZE'f'*+5Z1k(+rRjMiNk%bc`$2Y2dPbk)d +[lP"05[[rh(fm5+9i5KpCGN!BDPI(P8iGH))aB&$'@AMak[HhZkICP"IAk`20U"3 +0ED$cl3ANPB5bhE"dKJq'UT!!'MJ$K%Ef[#TaY#Qi5[JiZdp@*Ek(V6S2"5LGMGP +9XcSTH`kX!)Q$@e`Lj!Hc!YeF"G@qBdCpV(kpX(EYJl32qi0AAhd*'kUV,i&`%M, +25lL3!)9HJTA-Hq-JNiRVb1C`%N0V@&,9LJXedG30VZTedYBKmQ8[pD@$C2LX$T! +!US[$LD0[BBPS9ake"Bi4i"NpQ[B5,S$!l!aZkDY"[CV-MSM(ZdcHrYqi$lHRmXQ +0Uj1Q&hdZmV+6dc$Q@CReZ"0&fVV&S"Ua`C3d8JpM+h9[1peJ#QP[H2ESABrbfDQ +9EXl,)rR"Y(aV,(DK,&e(qXHCLJYTG`ceq9R+jqIUrhj)D3VcIeGqcX4Q-IlfpqA +BR&9R,NpTEKEkTP6FE&CkmZ##0U6Epj,8cI&CH25LN[RmcjI[Q)F-e2@eAFBV*qp +h(["`34I,9E@$fDIYZ+ZVJh8&%Tl"cXY,fjl%2ZKNB,XDjI@RH3*a"UE`8,`*ALR +F`jGi-!Gh[Rked&R$@pIN$J#3!``,9@j6G(9QCL"KFcS!N!-)"b"QEfaNCA)!N!- +m!!8%)'pQ)!FJDA4PEA-Z"&0dEh!E5A4PEA-JFQ9YB@PZD@jR)(4[)&9Z8h4eCQB +k#e9Z8h4eCQCTEQFk!*!$,8&%3e)$!!!`$8X$@f`,YfS!N!@S!9[Y[`B'!r!4fr* +r#&K#bBm'eKXaPa-!N!-'!*!&$3#3!cm'!B!!N!-&0Li`,M%b0Li`,M%X)%0[F(P +bD@GSG##T)$%j16!Y-M!`-5""E'&NC'PZ)&0jFh4PEA-X)%PZBbi!N!-L"J'!!*! +$"6BZ-#ia&90dG@CQ5A3J4'9XGAKPUL!f,M!Z-3#3!``!+!!S!(m"F!5[998!N!- +J(kNJ-6Nj-#dj1#""E'&NC'PZ)&0jFh4PEA-X)%PZBbi!N!-d399c-J#3!`&*3di +M!!-!N!1!!!%!J3!#!))!!`#$4P*&4J!$!*!$J!!"!)%!!J##!!-!J`#3!aaKGA0 +d!*!$!8P$6L-!N!@%4P*&4J#3"B3!N!-A!*!&%!&+!!!"!!"N!!!"%J#3#*e"4%0 +5!`!!U!eE#PT!!RIi(&CeCqR%2P6X%(Y60h9ff+'2YaYlZYfEEiHc(faB9@*9*9K +9BMf'(9B&#DJTT[J,i1(,8`"QDIbQDRi#lM$$cBqlU)D,4ASBB5rYZ5acTL`96)r +2pNKjl1M&V$6BJ'b3!'ZD%ZB8DBKG0`9Epd3(4ED8d&f,-,R*JQ8b36(T0HQlAa) +VPkLN[F!r*`mLD`#3!jp"4%05!`!!UJe6#T`#!Zr@j3bJ[U#@m9XCReQCTDd@cmS +kYcGhYGkYfl2&Ej`"J!%!D!"JC(0C'3!$#DJTT[J,&1R$QbkNIKkRaq`VEU4dMCZ +YeC+69%EUD1rE8eAPM-)NM2YcI8"Z'lbB&D-,`U9`KYT)$S[40NdGA$B!#a9f-0* +INe$h8`6(+)1+dE24hj!!*RCpBZREE[)VqZ-BbIX1!*!$6!!#!*!&#!!d!"S"'iJ +E8'aPBA0P)'PZFf9bG#"NDA0V)&i`)(GTG'Jk!*!'#`!,!#X!+k!#"%X!N!8G!$3 +!,3%BL!*H-3#3!cS!!3#3"6B!K`"+!-%%!Np,!*!&!J"&!#m"2iJCAM!JBA"`C@& +bFb"dEb"LC5"NB@eKCf9N,NX!N!-B!$`!3!#d!CJ!!3%!N!F""`!!+!S!N!-B!$` +!3!#d!CJ!!3%!N!F"#!!!+!S!N!-9!&3!C!#,!BB!!3%!N!F%5`#3"!G"8&"-!*! +'"e0PCc)!!3#3"!G6C@Fc!!*r!*!$"e0PCdi!!rm!N!-(39"36!#3"3%!N!1!!"r +r3!!J!L!!)J53!!!Q#FJ!)K2N!#)J!J!L3!%!))IJJ#%2m%!L($!J*"Rr%#JDLJJ +b-SSN*M,b-Nid"MNQCI3b%Q88*!KRr!J%F-!3!MrJ)!%"J%!!KX#!!%!"!!!J!J! +!%q3!!!R)!!!%N!!!!!)J!!!"3!#3!i!!N!H!!"rr`!!rrq!!2rr`!$rrq!!rrr` +!2rrq!$rrr`!rrrq!2rrr`$rrrq!rrrr`2rrrq$rrrr`rrrrqIrq3!crrrriIrrr +m$rrrq!Irrr!$rrrJ!Irr`!$rri!!Irm!!$rq!!!Ir!!!$rJ!!!I`!!!$i!!!!F! +!N!1!!*!(!3!(rri!#!#$!!Q"!S!+3J*!#)3#)!N)!K!,d!2i##!!#!K!!!J)J!! +)#3!!#!S!!!J-!!!)#!!!#!J"q!J)!r`)#!F-#!J'ImJ)"U#)#!bJL!J-!BJ)$3' +)#"Pp#!JC4`J)'Im)#"``#!J2q!J)!'!)#!'`#!J!!!J)!!!)$rrrq!IrrJ!2rrm +!$rrrJ!rrrm!2rrrJ$rrrm!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrr +i$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrr +i$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri!!!"!!IrrJ!)!)-!#i%#J!K#!N!*K!) +J#%J#%!Z3!!2i##!!#!K!!!J)J!!)#3!!#!S!!!J-!!!)#!!!#!J"q!J)!r`)#!F +-#!J'ImJ)"U#)#!bJL!J-!BJ)$3')#"Pp#!JC4`J)'Im)#"``#!J2q!J)!'!)#!' +`#!J!!!J)!!!)$rrrq!IrrJ!2rrm!$rrrJ!rrrm!2rrrJ$rrrm!rrrrJ2rrri$rr +rq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rr +rq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri!!! +"!!IrrJ!)!)-!#i%#J!T#!N!+4!)J#NJ#%!T3!rJ))!!)#%!!#!L!!!J*!!!)#J! +!#!`!!!J)!!!)#!(i#!J$r!J)"``)#!Crb!J'S)J)$+#)#!`"L!J0!BJ)'Ad)#"P +(#!JCr`J)($!)#!ri#!J!B!J)!E!)#!!!#!J!!!J2rrri"rrq!!rrr`!2rrq!$rr +r`!rrrq!2rrr`$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rr +rq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rr +rq!rrrrJ2rrri$rrrq!rrrrJ!!!%!N!1!!!!"3!!!!L!!!!53!!!!#FJ!!"2N!!! +J!J!!3!%!!)IJJ!%2m%!#($!J""Rr%!JDLJJ5-SSN*M,b-Nid"MNQCI3b%Q88*!K +Rr!J%F-!3!MrJ)!%"J%!!KX#!!%!"!!!J!J!!%q3!!!R)!!!%N!!!!!)J!!!"3!# +3!i!!N!H!!!!"`!!!!q!!!!I`!!!2q!!!(r`!!$rq!!"rr`!!rrq!!Irr`!2rrq! +(rrr`$rrrq"rrrr`rrrrqIrq3!crrrriIrrrm$rrrq!Irrr!$rrrJ!Irr`!$rri! +!Irm!!$rq!!!Ir!!!$rJ!!!I`!!!$i!!!!F!!N!1!!*!)Gd&%3e)$!!#!$9-,@b! +$!kCJ`kTUXc#`!5*LB$G,XGYCPD!JBX-HkYR!Q&8a#f-UZ[HR8k`+#iPMb,ELGpB +!8LMpiEh!JNUia8#RBdJbMUrCpbBL$VrTa[llf*mk9dmSTT%&(C'kJKQiSm8DVUK +U*k42-JV[4Fi&!*!$9d&%3e)$!!%"$9-#h0B'NrI54Xe&%fd!Y2Nh,VcE64YQ`Qb +qU`[IK0f`fq6GGYA9G@%!#6LPL2pd"ISD0+Bf([[%R@[C6S+*X0-3qX#ck!"SN!$ +&[[i%[JB!N!B")N&%3e)$!!1+$9-+Qb3!IiC&X0dj141`a3jG5dj2(GX"&32EXIV +B$&EecMiSU&KpE-&ZV1V'`$pMIe6d[rp[Mr0f9KR'kJ!,Q680A&D0p-'14[HZ8aV +X",2c+"6FaH)b3VE8Z5$*F`Z3!0p[JRD#kG&%G-mTHE-6hEc*lLZ&K$2-5eVUQP+ ++(3Xq(j[6I`6`H[ijkXV6kQVrRepZakZIr82rqj'@*3+i-fUMJQe@`8JQ[%@VE)a +9Y9jE2Q+EYiAYB49ph"I'dPT-T*5d!R%I6(k-`pHZ'qD(TKRU8p[f6Gd2ZK"S@S! +R"-J!R!"-[ISY!2lU#3-4I`$`SR,K!K!FJS!"JQ*J,6L,N8'-h`a#j")kiZTMNXb +p+(%I60pdq8A%+fc,'!#3!c!!N!F%!!$rN!B!!3#3"`)!N!F$!*!("2q3"J#3!`B +!N!82!!!%!*!4J3#3(S%!r`#3()%!9#[r!*!DJ3"8re3Vr`#3')%!92q3!e3Vr`# +3&S%!92q3"93Vr`#3&)%!pID3!e6fN!3Vr`#3%S%!pID3"2MfN!8Vr`#3%)%!pIE +fJC!'9[IfpL[r!*!1J3$ep[Eprj!'r&EfN!-Vr`#3$)%!pIEf9[prpj!%JIrhpT! +%+rm!N!U"!2AfN!2mrIG@Ij!&Uj!$IrEf+rm!N!L"!&6fN!6rIrCr+Rm!N!089(p +@+rC8+rm!N!D"!&6rpT!$9[riphmUI`#3!e48UrFVp[p8+rm!N!5"!&6rrrD3!rc +ppeC8+P53"AqVprEfrrp8+rm!!)%!92q3!e6ip[prpRmUN!989(prprK8rj!$92M +r!!$r+e6rrrEf9[rhphmUJC!%V&5V9[D3!rrr92Mr!*!%rbY8rrEfr2hf9UXUJID +3!i&rrrIfN!2r92Mr!*!'rbY8p[EprIG@Uk[rN!CrprD3!e6ir`#3#2mVp[C@rRr +hN!6rJIH3"2D3!rIir`#3#[mVp[C@rIq3"S(fN!Ahq2m!N!cr+rD3"[q"pj!$pT! +$prMr!*!1rb[fN!2rrrMrrrMfN!2hq2m!N"$r+rD3!rIhq2H3!rEhq2m!N",r+rD +3"&6fN!2hq2m!N"6r+e6rN!98q2m!N"Er+e6rN!08q2m!N"Mr+e6r92Mr!*!DrbY +8q2m!N"crq2m!N"lr!*!a6SK"4%05!`#N!""9$99(!J!LC1jArpklmlMNXX[-ZFF +-Am6X%Y5$c(A*3%qJih,d1S84PXd$p3l+crG@KBb([qEiI#1RQJ*LfjCT'E1fe0# +-D9Q@lDqaPQRCfCl@f+CKQVCaf+CK@(*CPL%6mEkrhrZqGkmLRemlqrrc!"YPT56 ++J5!2!L$)$!"GY6rlj-T,-Y)C#,jI`N(IJQ1LlClGKSSAJ%Vmr[P[BJ&$r5[r*l0 +Jm'CKk[jZSZ#,ImNXS+k%(15Z2b1NYPJkmS!8Y4i4L"bL+IT5Gi(a[4f(jVDhI4r +)6NpEjYaf&$!`AKrDHZDqk355kS2p)hiRd,d[l(rP"klLTi'bR2ZQ4A[hFfG,aEB +2pZq`cKe!mEqjf)rLCLkfdH2"JX#4cqkMai-&`6iZEJC5Z2fcqcVq!b"i1Ef+MJ+ +"f1ESf6,6&E#j%"ASmXM&Pf`IG2`(m%Me3$)IUpJX#,q$k[Z9UIi%-BSY#R(GQTq +frTA3m!RJ%qa,%0)IIMAqY2@F-`KNPGY9&ZJ@2aRlaA#hScXV2hB$ArHkbVK`)0* +VVIp$IDb1Pj+V'*0E)pe$6mI8#3BA%(ELX62'X4mT!hcQ$)DKJ$UD8YIVI&ri1RB +")4N6a@*8l"DfY&I(FSe'r[aLl"G8-91ZIU&F2)PP"6lEXPqPUmLVI*dYAdGH9DF +U$eS1Y)M(+[iPXLqm6`3cKG%MhCifa5L$Jb0&9kED%N4ic9qdAX(QVf$c9d4`i*I +*)YECr2m-'Qmp2%XcD&DhYIi1GmbdjMK0j8HpVV$cPlqccZMP4f9bpljIrZl9'5H +P"$JZ)f,XcLD6'(l0m9T'Nh3SE@UJPC!!TRf(4KiB+5C9L0%pdM1hA9NNSk!@5Ch +54iK5GI+q2e%H4'LkHEP[T0LmQ*5lr'q"-0N$T!i8a`E1S,+41AI!J5hD[5Mf3mP +Bh2Q$Y5*l#LKJr)0DVN$k6XI"lQH%-(aFRbX-fm[pfcS1JQ3DKRdaHmVkqpVD29m +*$b+%4qUCfq8UPRS2!!RHF5RlT@Kqm@fbGk*,mP$fF8cVKI)$*!p0MGhPQ&`rhq@ +9HUY6T*p92bUP5P(*Ald(D(qrNbBY-Gl5CVecYX"QFQUPe,E[rq0Xi3AD1G$QMiA +I20%""[qa3J5LhljlNA',!ek*P#6[ISl$*[8XGIjJh6V(T0EM#P3BH4[N("G#P91 +-$IM$6p*!pM0K)2#&,c2Zr#,Pm-"Ufr#Q[45,N!$$B'EV&,amY#4M&GZ%H0l-',B +f!)IT8"i'@r3-pU@fraB"`F'"a1Hmj(f4+'hXNEG43UQHQa)+AKU*(a[E%CQlld# +,d6J#"B3%"86(TBY6ICPcpdR&pZXSZDfrGiVN3-HZ0K%VlY3%SEI$(3IlK0@fq1e +qcGVp6IdGh9DEc9ErGYe*p@'H,S2Q,TV0CVAC4bG3eE2fZRcZYlX`L$0)"5QJ6ZV +LKeCE[aEhf"dRlh3hR8[hAMSA#Gcp,pLk-SN)h,bFd(!M39)VDNiNGBXaabd'YrP +&G8per1$0Fkf$Xm@2SEV)U-`C34)CMD5QU'LZF&Cm#PA(rkf-RK,9%j&c3!fl-lG ++,CDiK(LSCh,IE@JVRa"f!`9(31qkA6j,B+RElUI)@V%S&ZjB!X6l%N'&1m`UK0N +M`4fCFaFfQ[#UDGcGdC!!I`NS[E$Y!h3VKf0BGh(+SJd#r+kqp(5'mEZ0$ld2%,b +aAfUa*dQ5I+bMeqkh"1U"eT19HNrh0[D&-pH*a[k,pIX%PQY2#G9a*h8RR2F'11q +&aYP!qVGFXeML3N2*+J1`!A8U$HS+R0+HlQl`i0#-P,J9(VTGDNP+6V(RQD59Q#4 +e0$`6Hrr%Fk,4`+qbpdmBMBh0YXa'crXR4,Ka[+2K@5F)%E8Q"J3+-AaUVBN)%$+ +rZJ'I'4e,IRQ$XjA)#PAi'"i&e[iJ#1ANqSmapA1S1QALEKdKe3`!'94E#NL0DXe +mbe6aR4&@piRLLVmNYC`S"VYEUpp[Fp-$"*erUA62!5MNP"(UNa!mq$a#h[%52#I +!Ya`(8&8ZclalV6pblK"HDrfPecT2q-R0mY@p&T[@FUre'qA"k6C4qfhk+rcf,2H +-idjFpSRD9qQ[m08lh$-!aXdklG3Qa0NG`'6p-`$)(1XhNUqfR2i+bqY1ch"2fb& +meVF[[c1JeAk(rJUrFpIa'DmYF0re6KH#[lTpAb#SqQ+[#$L,V29eTl(d)IM3SF& +*[3M3S(2U2T!!`ep4h3HP&a`k4r@Mr4(R[GEkHF6UMaDi@iUXhdcfc&eSA6bYCfi +0MMafqE4*Urf5rJUrR(jmaV'iiZR(ja'M2cT,62hc`YHXrcb[Cfkep8ISmM'k[&D +5cBPMY1@kde*N*YM%5fEd(Elb-@Z(XMZPb!'6D+kSlNPP&APZYB086U3HZr8p!%m +pM3qj6+B)UBC&-4"%2@r2DGdYLJrX&P!"!dd,*53PB0AYrDNa8hqc-M&)%k9ZD0H ++-AbHU4ArAcq4B8#k236q3ZPA6!`0GNDb5j++)T`9AR@N'F$V$-Q"!+dB6TbjidL +3!,V!X9l5Ck8L-9"aHU+9$R%'qeY,RIb4E[)lUjKm9$IjYG8R'lG3G+p-dNAk,Db +Zc6$Q9hb(AL-YaPaMEQ8&(,@J#&Eq9,d8"Q'SE%*"%eVP6qA"529)50NqL[a!b++ +bdfca`9%c@2a`e#4iK6*5MlM'rff1#0J04*i$AN)P'dp&Tf*A,8&f!)X`fG%r)!+ +"Fk58Y$c!ehKSlaTCIm#V-*P,M&CmKj*GLSC0`$Brk%)9@"LFap4"FlXXfX@T'+Y +(`aicFE`M36"ACPdXHF1Np#`k1Z&m2k!#DeG&'(rYp)%`Ld(UhK&YR,B$J($MK"5 +-ZU9HA-cMLl-a8fZl'!,KaP%BS`S6#&JQC6Bj8'%`LH`$j!c9)m%0L)DrXVG*ATI +R#MBb$(,%bUbCMI2`QBC*%"XKF,PaCRqVUGA-*TLJ4+&*0"P"J#qN+$@3!+J11c' +Nj!5VBcHm2R`ZFja"VI8MB3bl,IVUm$Nk2QX1SUSre(P8)Z8`d1E&k&b'$N@S!MB +mmrQ%S-KTRc$d0-b2-b#4$#-p$BZTHUMj*J3)1ETR#S3Y)VA)Q0hC'PVHQc[4kJa +#mD063EHbJK[#3-@hD#HdprFh01hBel$irHk'UX'E'kI[X$Cm0RKc`h,,Fc8a12G +#,$!IHf%!ai)T8Sd[GI4HR(+G8*GL%`JaR4F0ce4$jH+P#aar&c-6ZXL!-`rL2f0 +ep")"A#FMqfm"&'imN@IDab@k6FjVKF)Ll8!4GEe&42CR6k'6eEN1)%#qMRbm-5* +ISP$B0$#E0SA0r5ABl'R)9ikBTKaT[QTHl'bG&#Uca+V6QeH02bVQ+85d0DJ%UaP +EeY#`f0km*,2K4AZBJN!LD-2bkPY([-ak*5@9bd-(iB"#Ck[qJAffrS!4LJ$qKa# +"S2#YJLJ2ST2SNKb@KfTL1UGN[6S4NFe!dk6EUappD&K)F2$JaFTZHLK9p0ek!Tk +[4ahJS41@D`Hca#3'DU1"qPFELKhC-AJ@6f8V(02eVXP5"Ml'!fH)qmd$%k2+X*J +m!2'2&r6$8m6ZNp9"m)a)*JVN04#mj9"harB4*E)D6e(36pH(il1kc0FaA!H9kdR +cY32AA[8k+64%&kk,P1[3%'Y`l91Z3d13!)V`@-KV%!"jkLBc5*@,iNXI%%L9#h# +D"#@NQYL%10!YaKJF53CSI(ARM438kcfYj1JZh!RPVU%jiUjT2b&XMFB`2Xe!SBd +2&Zkm%80,PP'J)2S!!JU,N`CeqCc"Q!Ld51dlDdR8`b$X8-IMDJ"GFY'&Z`2pj,4 +P'%Hjih1kMPkJ2b5M'd"U(ilk(*q&k&$$JHfAf'MrpDNl#a`C1`XJL(N(69''ABM +K2J1kUaj$IQPjT#D')pl!a6%+SY611j1YL4SU0+CXG#JR35l9BB&XPeBjG(eU6Li +9+hlUb-M**F80N!#&@4$ADV&el1ZXI!!6FUiRmDJc3&pV16QC3ZZkSMb'fZF-"-& +5-I!*&Y8$NBdR8%h$UbrD%c%H#eG4j""qZqI3(!MYl#E3khIPFF@c[TcPKLTkFm` +cL!H%q%EP5(jB2XYY'X6'mN'8cFB#)"NqT#2h4rEZap!&"$*8)S#9LPh*rC'"Hb% +QCM`&3CC*$"mE)Q#`k@(KYBGCU-YiYU[,(r1R[4VTAVS[BBB$Nehp0"`aGQ#G-Y$ +BJA8J5E[aQ%)b!a&L5D24l@U'q&Y[9KJ(PlG&Ylq@!SFVVG&B!#4U2Lih!hQAhi6 +J+N%BEq20$f#B%a8[B!)TKFmdCH6N*)JF8Sk9K`l)"5L3!*0EXB#&(c&dpACRqmk +#2!"2%%i-JVX$5M!&-2UZL9CGa282h[c-N4h@4Y[JcIPe+1a(B4%+$M``SG#"JJ' +&#!SH&+kLi%6K!JU6+0b'JS6#dBjRM-B#CmI9,EF3B'eVh$ArM$JK%M991"$)&Le +6L&F*9$rJVAcXP-DLIJ8N'XJ2Bb`8@(!J@&R@PcT5M)NjeSaF*cjG&CAK4J,CM!A +fIN5HGi`jQAi8AMIQ*"M#'8AlF9''!VTNq&JFd![Jb4(T$KfaY$HK1V*2C@9C,iK +maSDJ(U6TqHU'NCk[CPJ6Rc03j#@J!-LdAT!!D8%SF-UHFV%Ap(eMDfM-SNNc898 +4YV@SV)Kpk*!!M@#mNKlB+N8+9@9'HKUc4RUD((K3V34ZrM1D*@9(Ef0@U42#GZ& +ESe`em9!QlAN!*hYBf!YLLUieYNHS+bC-GiLIUC@qAef8@G[Y+!)bm-Xp8p3C%EX +A9D'bMLA296PE,5RR'piUfi',aL-p[9Xq#ddLS!jSZ58lTqXhDaG&bh8$C@cj$)& +J(!BE,c%YihdmD,6JPGaS$m-r0bDlbP#jqc`QLL)@iilHYmS54EqAKJSI!IKj`Gi +'p[14T#$B-i+#9L`ZG#b*C*r4L!M`S%[2U!q3!#"id",Z!3!h26S9I`'1D%rMp*q +j#5LKURahB@jApfq%C[&@Ym1$HR1lb)R,l4UmqDeQDp6f5#XMN!$mIJJM$TNIH8+ +2eK9#a-el"B15*al1MNJ(@J)D93KS-P8#lRi,KlERGYh5ZY#Y(Yrd6R3U`I[dIFa +iP`SDh,dS1X9#a"hllb1d,$X$ILNbDJMiK0[KFl@pMmMb9Hd14*D[EL,f`ET"(C! +!!J9XHJ')A0@aj1`GkZ-Y9Gfrm4D(TN!S%`P2STPEUU`C"I0(@JlJRrT#Ye2@M&e +,+3#PKlKSG""iZ0[9VPamp$iQJ)'-AF[!31'ZT8"qq"3QfRHp38HN6FA'P1Na"R" +rK5X4K0$q[hB`N!"%&3Shb&QXERTD,9@XRc0dJf%--rQFJBC4(fjr9HRLT5lVTU[ +AMbj6VS[iqQAefR3-C,RT+j!!%ij'4Lk521SB4-)5d!Qbe6C8f6)EQV$"qAJFYQB +f,1pB)Pfd'*X3S3RGQ*90T0qED"NQmHfq9&Tf(-cF6mYq5JL$&$%CTMIQKSH2G@E +dHR-K-)L+ar#d+)Pe2r3NN3f&Se'1l[dQF4A*iGC(8JHmAN)@JZ+DZXDF&qYS+(G +RKK#jiHP3J1cm$0I,lU(L"AM8AS0!0D8A#,jaC3#rY6jYLJ50qh*!dR%icUq5Kqi +9pQ,em,iEdUEdKf8XGjacLB"K'Cc2q,15pa)+RHedi)K3LHDcbC'285Ei9,a1b#3 +[K[[[0$Aj8!83fUH1[IBBN481h%e`k'UTkX#16E'p,Fq$*IpcQDleRP[lL"h(@TT +%Ni'@Z3N*Gc+[%k!G)@,C2L"(C,Z2`)3Y#h&PL%j"P0U,$lDq&SLE4lel#h1cpmi +4*,J%-5I0jpMVmYPkjZq*06-V!-!kSX6mr$e4%'3AN!!#TU8JAAXZUPHlFQ95J`J +C"98i`Kmk!J1J8[4X(C,2@c)KF0bBI8Lr@BABD43XaeC'(P0HmQa*cNXHPemPFqc +)52[1TT(fR*G,15++6Z0%%Q+["%P!bYdL1X@9c@BjqI[9##"bEKKThe+$cd*-KCG +m&*dlPV3Z#6R*3"V'19XlPR`a(aX[AkRMdmX('"`qZiTXI+GMb6m!HFY9E&debF2 +!Z%AV(p"mpHGFr[#!-!CIXcXXIL`0RS&!CYJ,)'JHANAf,MaH&mKblEBicC12fGG +B[$4jI%$lUh!3Nm[`+V,6ih8D((e(crb)`X6aML@&,ej8+p'riJ52U!,A!,bjfLm +"lHF052!deDqc)McF8FHA3IRbiY4CYbVH6!T,9CP&aHS'9QH939!a$03N0Y9@(ZZ +(FQV#f6,REJJXKZGrl[)j2RFealCf&`MT(qZJSU0TEPDq'dMa(RfTS`l6)l(#8qP +a53KiBjRAiSqJN!#5p(M5+46+#4@-`Q@lj5"8l',KIk9)9*Mpm0%8&,5KDmPC$k0 +JbmbN#9T+h,9-+T4RS83&SIc$YNqf*3BD,Gl`BA%3'DQD`iF$T`$HHL1p-CpK-[b +pLk55MN%01DPG32%U1E6D#"i,Sb-m+EcDL'[5Mm,k0PHA0,8&cXVr21,mCEXeh0[ +UFBf(H`piA!Dm*PePZ*U%i)')PH(BBNXJ"J30%4e$LA$L!@2JSia4YD,6ak6m1[M +"IPB'LaI,l6jd%6%I#q'4Z[N6`f4J$FJkhQCYpVK%cUcj`Vler,p)IMbF(lahI8$ +cVI-@qCq$i+eM-R$qiI(Q5@dAXN8p&JEkbHj(CUqE!0DX`r4Mf%C!'mNFTkf&A`R +M4&FBVf#QGlKAC6!RTQH-+Q$5T1CrX4`CKPj#G"U[I%PUaE4jUeE'3KN@KTS0C$" +iV,f'rqFB3GDc-Vam,Zr(,6&$G8XXV#irDi'UYU8Bl,3L@XL4%"A#6k5TQBJ`b!! +#-3"46"%Q'a(QlVGMJHMEkS5e0%'D549J$b*AH1hGSXpf41`'@0MZd1cHkN!X8"e +%pfCkh&B*FCVEfZL)iSilc8H%FF5$Q&6'dE05M0+NLbq9Q1,46@PIE8UCm2$%hFa +5Hr8q0BUh843RBRLK'26$b5K%T%GQ!4#`Y4e9&'4Z%JC$c'ZB,65SN`TX"Q9kY1+ +()*qhVIa!Vr#c!JNH8!'FYT2S388eEFRfS06UDL1PPG-$F@QrDhaqle%SrSF(A6k +$jmlkf&D$)G*Eh5jl0M$mk8J3BM3'iifSGRjD-cBK8,N13eKm"QFqJ',"536MbSS +Z-Bk0"+r2%12'"HMFE(`4Vc,MKkLq,E`IhBfrCG9r0BBmCKQLUM%0KN(Iim%mjX% +-'cGB6I'UKS*c+UiRdD`&K1K$jIP&hK`2ad2!apT0,-UQ$JNrB2Idd%%3,K9q#'Z +K%cpk!#,XAK`b"%53!%FjTPR(m"JcE1!M`XB2HE-qHE-Jh)[-iVLC468ce,(VUG- +#l[3L(aPLlMQ+Q-VdiP91(pbSkEE9TRpk28fC3FPZ#G6%c&j+bEV#U#G89RIDSEj +MP1KTbl6iT13i3@*+"6@8!3@)e@)JZjS4J)fI3X!Db+%-JVE,YZIKd-&4GM4m0BH +Vk$eIc5(&!)#('3""iB8YSR,!e'S[lQmXQ0hA@,$TP#D&+G1IJl)%PQ0L$A8!1MA +IJB$De8')G"@0M8G3lfNR'-JfZ-,pL+*pMFEm8eV-2!d9M6A@+%r-9LC1ddhX,fA +LEQ9LF@JL0Y51$B9YPm'@arBmZMDM@0Er4[EHY1bq0k,GDGQR0%-`P$8'H@G!0!V +U,#*mNUS(pR$i1"FS@p1Dm%RU5TFT#8RAq,,BFG,ZFaa(YL40(Z6+&)#p1I$DKl, +6!@SJ)a0!0C!!-QC65BN-Y&5"E4%q%5"#5UefMrU)+PCi%""&kS1B3Af!M*'M8LX +0`Z$kY1c(@Ac&M"$NK&UM*"3*GaHV!mMGJcG+V43G)-353L''XKm0cc0%pL,MSCC +&+XL@8m+a0k%V8I30lpeL$8#4"1"59(&#XXT"UK)q&-C3J2S6QA--dpe!kHc0r)6 +!N!"4(9)hl#(826PXLF)ceZ9el%Zi'Zi5lC+`1qC"3HCNT@$%hHa1e1lER+E&qTc +lq[chIQddPSZKQFK,@#5ZTBIa1R28jjf*M&!LmRTN(jcB"kGjV@r2GbI8J3(IX#f +MLSlf11@Mb9NRCe!9IBS-[[JJUfb(R0V`)05hKZrjqD*B[E"[#b@HSHHVhmMS5aV +#4N#a@LK5#MiZ(&'2X!KNmLj@(T8TMcU8LbLTd3LY"&A6%4&"K&bJUZj%'&A)b`# +LqLe&dXm4813kcj-cU3"4m-,PKlSM`pQ$N@`KKMcGFHRANY1Pq)3-qf(A`EKVbC! +!1*5Z*FdMFF1FNA8fPqV9a5QUN!$ImNNXB,[2ZFjDM`($lA#q+,KjK`HFLUSC"XQ +*`r&1LlIdibpMqVkpq`IhG'E[2p5jYf2`qmL91Mjf+#-j25iM29Q+aUAEdq25-q, +6NhM!%FU8i(F!*Vm+Y!SbdS8G@D,$4DV(MSS&0LaXH'K+9CPj[EYcDRM[SIe6dEd +G,$+jfIVl)%G&Lc!KHrP)5l`PJl,!EZjBmYd,MP6l'!MC%JA+N9#&JaE,@MJq[h8 +XYr[E@pc#VF9-Q%"++6pAQJ9&rRCNeF03BaCrj3"PG0dYD2#Hqi5Km`H'HKfCZa8 +b%b2jB%4`S[RC'fRU8#U"3d-jhV%(fRdB,)bJTGj-i'kC`+41eRK$a$M'Z5be[VZ +Q[Gcd@j[Vl,+!4-1d#c[3%P,fL&p0[*`#X&`QE`61YVZpeI'1UhKN$)"CUijjYm` +mMP4ieahTGb`R`BL4-D#TRHfYX@)X`S5HDQp&GP--TE*0`a$ET`mTA-[4)Sb-jU0 +J$-84JjQNkiN32DQSH$DV89TKFLPGbJbG2p5p@Ta4e'01L-15mUk-R*a6)P'F%Bl +l%ZbMpiCpiLG(r4$bkSiFLd@`V%[T"eJD),A)FreMEUKa`L3%PRdXZrZ--HD-["S +jP[ekGRH-TJ9jQZ"TCDU`f09M9fQLRbCHIIeUpp,l-NPBZ9NkjLc+@fPEifc4-A9 +'325M+,+hDAq@m#rdh!XRaZYPY#%V6Apb92J6CE8TS2!bE93Ed#Der9UfGP5cD,G +SAfS,Y%TYUECBQkA9DS9DEU!ii!Rd"lS#YN!dF&XJ+h!Q8"li-2"aB(kJ2M!V8"X +S$13'Li1M`B(JC("r-$YS$bB(6`DA"fZ#6F'AJhA"'F(0hS$Ai'hcGRRhHl1pGQq +bpk6hNRHKGkjhLAH4pal[E1r@)Rr48*'TD+,)@R5e++8SVXKGp&(4Hd@04I9&XiU +Z+pVUmr['I5EIK'qIlkV[L1q-ld[I3Pq6lf9IR@q'Er-khlUaG@hVR1[1VZYFGf( +GNA@ReKeEGhPGpEVjkqVAIE,ZTR9ceQhe"raPrL&r[hqDrkcIiErU2cU@+ri@Rf2 +Cjf*LR9eC[XE,0'Aj$LmGb[,E['a4PZGjfDiX2q5PT#cIif@cXRbAPejP@8e,heC +P@F2,fFVbBelHT5aIi1@Rb[+2HIQ@X[b!Pdh+XS+A0FUbNTI,P@89,dmVbkpjQDJ +X'hMjT,+FbmZ,bV+4Pah+mLYHpLV,9hJj69PqMjGpbR)q,mH9jBZmp#[,TE3X+P# +@rml,6FTb#5p[9*Er`FXkCIQr[(aC@El"baG4R)'2QiKkPDk)!$5TL5FX9jC-iU, +6bT+*@T5S,*Q-48rUKUVKSG+8#5V$FJ6i,5pEP)G-S+*fCFP*8#3T3adc$e@Q6'" +#&!PPb8RNhD*-rlDm"@qYFY4TRM",@Al1bmA+p(*m&[,dqFT`R"cHMhA$IF`6,ZZ +ZrTL[h%SAMNcH1'A*#H&0d4e`NUG(G&IRqDTAGr85Aa%"rTU)ai0)ZJPIm`5C!"` +0[6)"1,'$4)"2C1)&Ve1fqaN[le'@bhLj51RiDeiZ8CEXXB*cP59(hq"#(3X,L)A +JPbKqJmpPRR#,MLMP2#&,eq8dAee3KQ62%Za8PK`*JfGeNH8cRVjEQF!H1lK'BC` +*%M3Sbh1m$#M,2k*PB$1+2j)C#pbJ,*rRjA6G-Fr6-B&[G&I,q8V[!GlMUaVGeCr +ae5AGeHGmGB[ZkLri+NYKkprik0Z8#Aq#ckXmS91C`-32R&8BjB3*1*ATabR5mh3 +L`$p3p*FMG5#X1r)rk%SVd&dYiD[C5MG+c10mGBrZLU1MYPMAl9fqNMd!XkjpV*[ +!5DpGePfaPp(FZUXQ[XT3YRH5"iNTbeGj'9'@ahQj6eQqcXX*C9R15j1br!i[Kj6 +P4l`-+mZAD#PbP1@A[0bQ,$RCQ69D,ZIP(3S*AL$L%l0#GJ!jbSJAPH8#ARkQ,(r ++bmq9j9r`%Z,UBV(L8*a!iCm8*mDL,#Li5P')53jpQ[+!(*j1C8&$p5S,1V*,k8! +4`D3mq$-X4T8&-@*3&K5-HXF@4mj&APH"NdcaV*h"QA-NJ"41e![!%3SD#Yd!U8' +pGK+AB!$QC3CJ(MJU[*eQXDp4e(QcJdH##ldfp5miR`Y$hRCd("!DGkhQVUh))$I +Gh(@T@#LX)LSq3HlG6b!qPLb1L#p&PIJBbk2LC5J-cU$iLFJ3Tm9&X8LmJF9PdF5 +ARiM2ae[%Zd4B&'T31)R##l%cH(dF5mEVXeJ'AT@a)hK9a)lLpAAX)PjcBeIaHL8 +@aH[&Q!1[IirY`qYrBfIaHL-fL9GpE"THEmGfir9bV"q[Iij*H#f+$H(eipJBAVQ +a-VcbBhkmIKJ$VYJ!BBmLUfl6+VKhi+J)Q-cJhQGD(F#kZGKb1C!!cjHdQm6RfSq +eHl60fJaYYPBB@#1U!ckY)!#2*5S$Dl4,!2c#J@E4&&L$T9[8Lf8JaA44*fUecm9 +XN5qf!B6dDalN2j!!0"-Q1E9H!*0@,8f,DXZdDZf)&J03QFJ$[!9QJFE@&U"`R$` +R#LG4)#+50b%L(N1"b2JD#R%SR%EK546H3B()@)l#"45q6Ci6K9G4)$+qMS)0"@3 +he1DKm"d8L)`IS6#!`NXSY+&`L6`R#ZG4D%EK-JV&+$b23J#&j8M-!K6q#)8Y+(b +)`K`8rS3m*`T3CSZl8%$f@c%,K38Sr"L&Rj,R41%p&*DJm'FSc%GK)3T9+2`@K4S +82L!&,`U0+"!"[P)Ld9Y+*2Se4k*riNMd+8HLrm14k"k140-j%[f1)p%0()Pqcj& +S0NHLhh!NQX14k1mj%QhL5(3c4k*#MN6r`*(S[cN5EH&)p$mFL6E,N5MSKD,Q&5$ +RIBB@m9d9m4lBTSYBPeeP*!M*LiGFC6%LibFme&rc8$qAK`SX`9#APD%@+d0pTK[ +UY+X03ePjm5![q[$TakFG(kK@A9,-L5'hmMDHj@dm`pXSi'hXiQhXj-0cq(#MqI# +c1,a#1Icr9`iI`+9EZI`2jA+FAa!EJ8SEcNh!1pi-GG8-+$1VBEB#V2l`G@Bj!,9 +ZN!"BG6m2FD5"B6*%0R#&AK2$S9If(RTjKN-[+ef*5la`dNYm5Gh%M,[G2,RpEMF +rp+X[*XD2+3XB&B0VA#PFU-A9-HliXGT"(%2h4(Q"4jehZrr+lBVM!Il1GBS,(PF +l(Xh$T,0dmF$[-*NLH$e)9De%e$p@)QU9%P%EP)MDT%68q8T%rCi58CFU%IAI1+) +ZiiLkK#2Uhh*%r4&(e'miS[i,4p3kMUKhFN5Ga4(e(cQLhX%4p3mF8Ar&5A`A*r& +0R-4radPFbdNmJj2iEcL*Ve15q#+5k4rXdC+*&)EBmGb6VYeF11jD3i8AIZdUTN* +0YFXImf#3!'dml#pif"Yjf"mS`rSidi,3#9RRXV"E,QHU9"&6DeMF0Q`R9*KI8G` +i56"ElE,c0+%Mqa4d*!PIpM`*4F,Recm*TF*l%$kVN4`ekj!!E85)4FKNX'rHJ," +"V6FJcTVFA'M[Gj-B(NbE[!G"25$-Gjk''0YRC'BL))a9,$)hRjCH`FU"dp8"$*F +BcV$Zb!RBieEG'FHdjhK*M'$R!Q4bK$"$p[(NjhjA`B*cjL&GASJ2pN0%iE5eRS) +5k`kApp3RXHD(-RBf#UHTFHI5rXDGmiP`&)$,L&,+41'4b*KJpDK*3'$K()3cqM, +D3,LlJ,iQ-AdLD!j3([GA)[04V%`+rR&ERa8UaH#l+%J1@I@V!!1U+(`P(K9$k-P +JHi3414$(%56b!50CI6T"dM+r"`RPD)5Uk@LE)P)kkKhcaVc0,e1@0kJpJfh2[Hb +fEa[c!GAkfVdRdi5PYIieqfBmG#)EU9F+r,$mQ&X+@(YY[5JF1[6IDH*lRkD-55r +RrA[Pdr403$eC3Y&%DNR3CG""NK46*Pib55GRKHN2LBJA!mQpeG8&K2E@LR0!K@r +&Ta#I,6#GeUHUl98abST44dq$"i0P0V9,4l4LC19Uq+S!U,5HV`SUIiiZ"Bk'TRB +A6kJ'8VfT(8*M!a!SQ)YX&$@fRUq-&T%fT4-+lX%8*ZVZEA3m)p+(C)050!bV#1p +B5qV#k56+B8D40H3,9A3YbdT-ZABlHTV@f[Y*EGqdGJmKjlH3!%SIBV3C+HNXJ*6 +CY0EC)TUVNTbYCU(i$"VUf88XhZANJ3CS)&HIV@I9`a#$3%RIa1UNI&BYjFBN%PZ +M$"liN!!L*4m(c+DT%8aPJciIN!$)P"[#-FLf&TUi$41hN8L)@45MiGPmGB[fZFc +D@C@KLU1%j#4K%qUN&pk3!)F,GH@Nf3,aeCb+G*QXL"`bB6pP`YEe("&hB!0(a(3 +-B",6mEN$RcTm2Jd41X'JGM6Q8dGMVUK6fD*V#,AHC+dr)14ZbSCQ6a"+(a1@(K% +hdZBT+`!B#PE%drA-ER'M1E28G5TM%*!!m0pC+4D$f'XVMh*dmr4N[M9K[1lkc,I +QX9QE199$C&bckPBSm$L51#V&SNbSr2XI&BXq41G-953B*T4q#,-`SUKMLH%QC(( +ddfA&5cbSM`HkG5A(,bTaI!XIhl[4admSapqfLZ1h869$MT6`&&jm)&$94*'JVJq +(3$MT8r-%C!A$"pk@(K-,'j5!NkXR)(XSj6KG3RGq+a)@RPrJimf6QFL-hMB#FEl +Z2I9"cLE+5%-GSFMj@*eJQN&)k)iPMr@TT-[C8R'*A[5B(#*952,'(aYDJD"'aE4 +%JYPb0L("pZGXS``qP'!jQkTZ*FqS$PYf!ZBPFck%U#q%N!$@3NK9SQ`1-JZN*$R +T0pC@r[YNUqXUXN4VVZLH+DK$VGCSjCH6V5cUa&-V[h5f0R8R62Y`Ama2Pm-QmA( +*aaNhU&hPDfaZ)MUP-,+IYLFrdN@1,43jj#`m1E-T!iFb,88Pd#-[%bSI3hJ9!K8 +bJ3Vc%ZM[UK3#c5+&6f8b1E'955@)eCNc'm5+jQc#T%)QeQ`cXA$%!e'BXbLB,'+ +5lCACS-h9JB!4%KE)Q5F@B,'J@pGY-N6Z"mTqS@Crc+m`kDl(BIkK`*J$`)!I9Vk +JG*fQ)dU+5K359Q2#&&EG5NBFb%LRR2e%)3m"2qJ%N9[*dJ[M`PJJ)aHbfUIl(Mb +"R$(N,#-$8[L1%-&)l,BNb@j+K%#Z5V$#P4!X`J5lbJ6E8S*JG)48#X'N&4+-Z[Q +9"Cb,p6HZ4M#k[U%8JP(AJ)jJ8JQ#E@'#&HS**MJU+D)jRfirJXUc0a6JIVA9B4) +CVL%'"@lP9bZp1TEdYlH+LY'B6ldN)(3P"%ScEJ1",R,'[khX@'kViU&SH$JLRST +%&BMJ#EF#G2U%(S&p3`9P+XLY6$)$E`$0e12$TmNB!Q8PYVVCLHR9!X`+3$RMILj +Z9lTaS#Xcjb!a(aD)E**LAJ6U%MYZqcNSh8VE3'!HS-$FhXq6$5b86pIVk$V@Ell +`mm@iQ9P6V$LdS'$Ac2LXN5!I8iBN3ZEjiT18!5aJ8FL&,-$UJqHf6[5m08$QADI +e[0@1V+[Z%3K*'fG3S-l+6B1D@1bmcf(R[9"fhXh1pCU%$"`1S8cM$-Vm![8LZZL +Fkl[JA0IU`3S&**QZ6UISJFmFA-mU1E8%%%-26E%,+K#QGY-"'[0N0NS``)I*(8S +GdSmU3Vk0$%*5B(T%#k"DZ16k%af5F5Zr0[0V#`MRV"SMmP@q5d`S"q8PKb%,K0A +fa5kS(N,cUPf8c+89-J01%&i"S@EP"D%8NY@4Br,Q%H(6a2YiB6SGA%2NB@mepRl +Q@`0[Y6Z$NGlhHqA(**bY-UJrP+pH@$(,32[XHmV-YHZBBkq)ejV+q""i(mid)"Y +qTSNMCCYL$,QKbCmq6P%586YFPD4HAh6[k'd+CI"-K!,DR&R8@%p!LY66&)B*)6q +%cZU9S4U0pHNLN!"$bafT6@%qaQ3qaS#(-dSp#),@J88P2B9[KTjiTAS3"RU*Q1m +IdF4E!d4DpL+cfBYX+X@,!)8KHbM&Z1CX(EKMNFd#PHU"2PfP"q)"FAh("RNJSHf +@$eb*9q%"5qmXYLRHVm3QXJ3jSZ48D'AkK)%Xm2`V8jA6+F05jCRhZj@SqRp9d%j +VVZZ0fcDVHeE[qi0iK16Q`CNjTkC%`MY@Li4%NVS5*&P-PfTd9,HP&I04@h(`irM +mA$l5@Kpa`d`"$(%)rma"VCPB[BfGp,@p@TNUIJmMb)U6),-6UYLBNbf-,(2EP)a +cZ@E2%e6BAV`DfhINC4&4#m#VaL,iVYkCh@JE`FU1caTfEQlJehAmQS(Z0eAp2h+ +D&3HSaZa8qIMK@"iJ9`eib&b!6h@dp"QZ9H$(D`P9aPCGMEKMQ`S#H1IT6%[-9l2 +!)X#pc9L,!2FSc**Q[T9L[!Z,)mBEUDV03Y*MlklCB@eU"hU)Phr-5kkiiK"m&Z( +c+6jeq0b"ch5)9ReX-q#9JSq%TJLZiq#kMFb(Lj-9Em$d$,T[Yb),j#(E%DhC9UQ +9-5V!38J%S#apK$5!8c"+8@p(+U%%J#+!UT''d)USmQXd9Tc!SkhFT5b%2)#6F"1 +f8@c-$@I!&&1ZhD)++YfI3N%Y+L1)3$!l2Nk1!4PlYYE$Z&q"pHAPlZA(CjbmhQE +-1EYXI499MkN$TKUXEhHCi$#q[2`iQC'h[Jf(DcjPCB4Sh2&,*md'-aU0m`'Bj@C +2lCQ5Kd#(A1[EbCYQRCc[cKUA(rKJ"SqQ!R8eTJ)R9,Nq3)Bl(UPiQKfr&R+k9HF +X-+D!'E03#IJ[Dl59-l6"+BT5KUQ+E""K#dfaZC`Y3@r9%@FV-Y("QDGQ)pJ4$)b +dH$ZmRAKeHQ%`kfN2(-i"!ZpF0TLkQS[%l'FQ@JL9BDc$j`eUh!!Q4T4V0PIDdp6 +2ear45dA)2!ecZaLL"N1d+C1I`q0[m&Q'cb,c%-pKL'r3UBf[2e,0(QNIlE"q9FM +4b#4UCjlijdR0bbrI6'3NercCA!Nb4k12+5TCM"$QLq&MMR*Y9JBr&j-M#$$U$YP +K*j3+$B4+**!!-+(!3Aa$J@1N9`%!"B&eAaR"f&)95!`F,4e)V%b5LTPS!eJ@)J0 +Q+RXiX'iRF,D`iQF+q&a,`TK$)%h-)dpaU925j-fD`G`RMIA`DR"U`-!0$1E@Uf" +ZaDhQDY`0bP@E#U#DNEJ&DX6K4#-JYi"0DRc(E%DMa'-#1C3%BG-DL(MY5UH25ZP +8S"Ldf+)DY!Jj0@4ZJ$eMPKjmAjVj9TaV#-L'-6C"F*5m)bdVIi!!)qlLP(R,b3c +B*ki1f&-A"DMhU8!p$5!$mfBR5kN`%H-+Ue3phk3c$m*4dp1S9P`imkq20qGPj)M +FEDYLY!2Gf-10ACPLN@8Jj`"NP&8P3l5A-Q`A6*!!4rpE*hRNqN[RmKV"QAAZJ&E +j2"&cNUBY9UBG+c(Y'+DG9kVL+M[Eb$#*E*3R8E)0Ne1[CS!AmbIH%!bLJ,M&P8P +!VQqfU3a[VL3`BeYPd[88B196iaE8Y!@1h9chT"JM*`9QG)#5TqVKPDQU4aRTHKY +RLXqA)SLFE4cdS%,[DU%'4Z!P(UMDM@@lXRb-Pj)834-Jie)8#"U*(YPFp-!HX!d +[hCF9Q)6*UC(LUKdd[,f'M%5%M*RN,C!!S8h9$-)T#(FkQeQa-`Y+RP2ia'%C38& ++*594pGeSMJ@!c5)k%)eB2&f*M,J3"aID8KMN#Vab-`8,@T8Dh@5c,56+HULHQU, +BdR&+S`U59UkEIN+GMLb$"6a8PSP-Z"`M%bid"'95e'"3!*QqfT(0bbZH4LHVDZD ++2#`A9H0+IU$!Yl&a*6`JidTUjLiH&Xik%'P8%FfYf$f[GE,)ZYLL,A2EKkl`JiV +V)9#mc3(6MC5GHCa0!*+A8TN8dp8)E['LLa0#TZ38S&QFm@8-MUJ$ckjib)B!$4p +N$hfVZ0+#LFZ4eG*Z#D*E$-Z2S)iT9LUYrm@9cA`DJ!h5C((@mf*l&cmJ8!LC'5Z +1+0GV1%2kjSS,8LXT4"iCFS99%UKEa1!$f+B65NB%*(B#bIZN9'Cq9#8[$'09L8! +S+EBYTU3`Q-f[51&$"F*RbYBC`[Y5cV6[q&I),kbeYqfC)[1*IlN-N@pFAI`9-[p +"hH#r0aF(Be+S)U*fFK8V%qFicBrS)RX0&$+S5!X*Re&m2#1+-4`cfK$6pTMJP)r +'aR86H4)rY13e5')HYSbL*Lf[R%!9IX)@qB+#&aqrr$BNP@e!`bH!6a!I,cj&aEB +U(hh+(U*SG"hUlpTaN!$,%Z#APemrH*YH[kCAS!S!bdr83Sj4,H`d8KB%[5QPdYQ +kF"2BSNcJ6`TU"-C,(XK4K8Ue$el#8"d+1,E*`LJ1H!G@ipM9ELSL`lZ1ZUUU(K' +Q4L!5D**0RF4NK0'f*%R*i,'C#!GRFcmj@Fi@3l(525`60(XI'KrUTXLI"m!0RZ+ +N0063&Xc*(k$-(R*Ljb`hXaV*bXCQ!JNGB0TRYm)jdCT`i6TVDmpC$L!I'BebPT0 +5m(SNKl%*hL&JA(apa&J&aGpbeA#)(8Sq)+d$0,8EQA4KfU4Gca+%TE0dL`pek1D +94kBP1mYe%qPL8Gk,R!lGKDjM6Q*)b8EEM`bT`5Pj8Ml-S"cQ'9'0C9&(L42D4!4 +@RBf3!),@@)RXLLCV&+mqDa5$94+iAc&(98mC+cPUcl@``bc%qRhTGPM&5HkiPTQ +Z#Y8Ec'DbE*&EKdAJeSIKmB+)ePjmLVji@(4#j96&*RI'+1+iMZkCSQSN3%f1F1Y +m5X)lb"3+4C!!`Ep(G2%V852IfH*r5*PL8U-50m+%"llRe!GU-'@1ZYdZ1KVQ$X- +++X'BTcNH-SCP@6j*MHVFMQDrN!$P%5p[hcN-)NMS2(!4fGe[MeU"e,`GB[*KIJ$ +#Da*9eLE4F*LFT@K"DQTmFQVUc'R$MfFH6FMU6%Kiq+"PAh42r*iX%@UkL3k@ENI +ebZq#*qZl2Fh"!DDhkJ,!e0X"I#*cFG89ZEQQ$e13!eBIp*53!$-#'-b"[pT`Lkd +A@GTZPpkJE%bNB,8EB)$`mD4V)F@V-fMI(@kN$!piA%b6-bFQ(ijjq$)JAeUHX-6 +(["2)h-[LCd`kpk2hT5F22jk8R*ij'"Grj("bHRcb`EMd8VDXEMKRXclM%8`AMI@ +c%BDHlTc0e%4-q"aRYPUMN!!HaXpb0V0TSIlSe$a"KKI4!0&Ri8CL-'Hch3qc&3E +McYKiZ*(B8kidA(RRJ9%QUYFqJ'L$+*kcfD+0J"4T9PCd`B(*)F5e9R@"QPh$i)' +BJib@1blCHrHSK2FURS8DbL0cL%AQbAl1-11*M9qC!VNp)mdMAM46YG-LUUj)VAe +ZbQkJ+[MG1lS6-M*!Pqb%cX0(ikl&29jDI-LHZ5FV'SdhCd-4jND+'1`%#A,kSP2 +UaShjpM&iaDXQDp[YUVPQ0S*"Pa%bXk5rPTXXG'p(3Zf2ZqE+6-pJReND&m$P2Y" +alG4K&fF`!VX3J#PaSB#Ac*jPqB6JE$+e-&DFU#)#FTH5QKS1ilCqUmQ+r&VqIHl +clReZ"#EMG%d-8U!#%0$IFBQm*NbM#kAcPV3TcV!C9Vf2P*U'E#8,1JD[hVFh@mP +DXZr3)!`d6N@c$dee$!Xa1J3'X6A&bGPhq&T@JQ[+3[`QQ8fabmdd3V6"!-E(3&E ++PMCU@Gj#'hM-5"XiSB*'ZlBU'jK0CT!!m-R2XiNqj9%Z1k85SY9k-LR(bN&P5bh +#k6XVe1&b*@aT(EE8Tc0,2pT4pbSf&Gh$q@5!qbc'*U)(NrFIcNTI1B'c9#,YZ[V +8#EcVFQN%IJR-l$Xd(%@1V-MHD1F9dI`B'0Th1-Q5N!#8(NQhC$dZCp(b6"*,&Z4 +l"N-A9E4(`6F+3j[lV2ej'@UQDj-9AUNN-qLibkF`ijHGbRI!51I8i$j4[!i-G#C +F5bRei0Z8JcZHfX%&(j8mq0XiH%m((aeq$NI[bFL5$pp%TJITF#$!0PN-c%#'5Xa +R2T%6BM8'aZJka)#K&Fh)E%+M2jZSf6ZeHi%rEBUD0laICB5Gd[0J"'P`p9$hhZ( +Z`Bl)RJiapL!B'Nk21h8BqHbkVf9%$QDB(ANTEl0l,QjdcbE-6HYeNXRZGFB*S6E +Y4dd4GLbT(bMCY&qp4fRDckqB*f!c"9ia,GLP@9pZ1TRKYBPBHkJ4[Pr2PSH3!*[ +Tqr8pbK$QKM)"R21@[T-GGmdbH1VDiDaV4a'hQA@e%FQU#f6X1TZDM3`$3%1&JmQ +8+a1&ZLrA%@6`kZ#KcN%EH4Fjd*6&a6c`cU0!AChT+iF"28RdIN(L)UB[+!2r`"G +N4Q!hAXfL(DmaiF4VA%cl)PYdIC'&r8lJj4@6A`b,H3"$!U)&,bmDbkX#D&)&`,X ++)!X!%h+!I3@5J`b1MiU5*[j3$6DT,0$%`*Rq*d@IY"kL9ekBlYX1%lMK"$m*3Z6 +$15$K+ldC[e"J$5E'Q)PaCX+$Pdm-f9$eaQFFCR*pPr!BCQZ(b'6ZT@%829rJX4M +&DebX`FXM*,b'4"X%qhVCm1JBUU*Y[l0LFKZ+%KFP!,YHH`B$5Pi%DK)+Bl)K($) +"L#J`$K-@pdr!%%(Tdk##-%pLB!T$BYYHQ!BDrdZB0*3Sdq![[lkI#pVApaZSXZ" +A$[8V`ifZm0$9TT9bU"q(qPGiD&Jj0,a"KiBhi0!`$Jf[m&#$FLLEHehPSDY0+q9 +3!`ieV2c3%"LV-f#T*NIIPC*G!PrI6m)j[2"qIEq5G2i962EV*[Z9lDpXFPJh1Db +`[E,*"YeN3mKEN!!T2a(ZLE+`N!#A-d[lBHkN0bk!#&fXSY'-aXT+"SbiZT1l91P +k!cA+60[I6CQZpf13!%)HC!Yl#(Q!3[-!KH4KFa-TFL*VHc0j$&HBSJf-h&"#%XS +SAd(RcC()l%(4erFciL8XEmL8bKF'md8VAhMPL`(e`LpIp+G#U,A,@)$A"&$d6iT +*Bml%J("5*ehACLD9ArLq[Kq4B-*XI[`'a@"i(aX-[m%e5Nic49Y#fl1B!&#,j&8 +VAb#c8-B#)$TjU5TFL48G3lTMp'TCD5mU0IHbKdI%9)d99'kLEHXf[j,1e+Ab"3! +J2fZ,YKe'*Iem[ap+)VVH5S65N@Z&3m$8rZk+0rTEGCdhJ(9NPYkR-$mUIbTrLHV +X9P,YPpVPASN5q!L-G@2bL%rHVYS%XSS+*c#!SYAU5@FLTclX'Z[2CK3jST-f02& +Q!)B5BZdN-Sc!'-,#aS*CEPlQe"eAe$PS0Z-RaRJINYk%+Y@!'+#%*-99b(JaJ6i +'VLVe2BaMLPeNN!"a1k[)QYjYHm5+5c``4FRBjS%J)dY30GA#UTP1)((cM6QVCS) +%JZ0pA9m6)hJ0C,mD18H#hf*kCP9H3mTU8!9Qfp'BCjASLl(KcXlZE"YBVbB$YQV +!"hA%qSV,-ErDR#3hd@%H4M@Bi$4dYUK+,D#bMaFH*f6f,(IYmGVMIjXVqM!"$62 +)8f!%rQ6K56)$IiHlpQ6Yb4rP#YmGJcc*Zl*KCYQFQPQ0%A55b@Lrj&Hfh@HY*d& +P@Dd'C(D"&&68[AfG*ca8J"Pjkk"Y8&kLkEpFmk69(qEi-QlGBbcJ9bkrFQLM-#" +6-"2U%6L`1L&Q4#mE3!'2)TcYE08KIk!mD$kJ'0BQ8k-(&)8#NI,CiMibQM`Nj6' +RcQ,E3`S3dXa#[E,AmhHF[kJ6BZDTc6++5*N8lMLICd)iK%)U#'8Z#l1*%",'kU5 +QYA9rPm*MSMAHkhP$Y*T5GBR-)[ja@U`X3K94`i1[H%#Vb(%bf`'6(A2d!Z"Nr%X +R!-k0h4*)'b$cFm!5CC83"%Fh*BK$p(U$`'fS)JCJU(#iVe+d2A3%0Z#mC)J4k(* +U2#`Ae`CFM`Q[V"kp-k),E!SC-94S-Bk3!0VlAbYI)U29j14MqCqK*3FE82ILqRU +k*V124R0$cK$+#VX8`U(CQkQB)S+[2CNfCC'9&EaGIG-3K)#'J6KGX`rQ6GD1F%2 +C$J(&XcU84-BNYE'H%aN(Xl*3-6harF(ZB@-YSF15$VXbZ!Rr4%+AS%&i4SC0Y0U +R-E)-4q*ed**#$kN4%V9jFQI,qM'DaK[F&%+-3@R35')0A-%P0%NZc&jXah"1EQl +J84Vd@YEK*&U1'"LpMfV"pdLaF*em0%mG`'$p22cQNCBHr&1Rq!ad%$qicR`X0Cr +KiflEe5i+-$6)`&%L-@hl`0Rb`#r0R6I,RFe%bjE4Z6"K$01FaQc1hZ)M*!JUC0Q +-[JA+9N(H-L)hK,k&fHGZQ&rE$F4[Sh%a%X3BNr#i9PS@#%-peY4$cZPLlP"-(@L +k(Vf,(f!3*L9&UibSRC-AS3l[f6H)4P8HUqdVTi`+[(LjVj`V"m@%BMFDjHV"DPd +pUjV1%fBTK@@P(Val``rQ5@dP[E0d(MpS!Z!DAMlK@`X(4[Ma3[-"Z%,M#&JdLfB +XaX8iAKlKHI!`UL*$H$dYRXEM86'+"j+3!,"S%ff5rdr[L!Ij#,bfLqf5[a66lZ' +qjlQ5jH9+PZqKKqN`[(!BVR!B&MJ-Lh'ZMRQi1SE$J(BH"ATr013)6TY16R*rkTp +R1fYj1c0j#eLX%@Y8)Z'UAr6MC4)Q[!!Qi,9El-DVAE4MNP-imHS5AELD&*0Bc"2 +cX$L,YJZra34@fAZ3!0R$Ua9D-MNjqr!60eE)j%aQ%SX*-D&R%JXd[iAA2V%2,kZ +`iY8T1[pd)SHHiE8b`f"e,E1Dpe#!&rl921+D`C[VZ[V+)AU2b[bZ)q5*,NlPVGV +RlF6"+8f1U9hCU,pIFN5R5[(Q'2k['mh$@cGLq&kekbU(6hR+`kHXH[K2FZAKGhS +fB(LDD&#lFB-(AN+ZV'6SdmV35`VQE0$35d5cfLh[S)-h2rDbDY+8NPK[+!aQ0Km +99DlaYNI&Cj*fU8,8E"m80B1r%@Zf@mA#eCJD`2#'[R*k`BKA(hj@b*LkpB*Y+fH +3!!4Lj%aK"E1TXmU-2!`YF4bC9r1[*@)284%L5$9+i6-U2%Jr*D@+LZLd4ZQdN!! +lN3VBV8kh%Z+a)GG0JKSNS+0FeN#KX4")b5&#LT*BL@ib%i@&R@V8Sa5fjqM8Z9@ +ZBP5,DqbN1U[LLc%SIaG'UX6#qk0'ih!9CqTIJ%P$GSim"IN%YSM,&[ST!*X*UD1 +`P5XhCd0!&3B"5a2%8UibUGc465B$`ph'RlZX92P'SPE#P,%I+Sj19N"#c,,!Bmh +F9DdSLMFKURiH9DGN@k-3T'`LB%HC5Jd)V#'3!%hpd3pbd!fMDLP5HPaF3Tad1%2 +DQmJSq%-CPS2*`mPiQ$P[(Nda25V%@V6A0@pHHQ*m1ZX@eUlG'bSIQY+Yc-E9c!* +&1K3IU48*Z#U9Q01Sk@)d!P5c&&1bZ#&M)QrEl335)l-)ARH#e&3iVj+kNNRG$-' +MpHa9K@,qI6NUBFKi6%D`a6%D5%Ik!PRi#LLC%1%,9N,i6@4%6#(mILEm9KhK'5c +@%Ij#(X*[P3N[U6rM`lm4*)mrFLeZB,H8G2K-HQVbSaY&IJ*G@C!!R6`V0HJ*",a +V$AkZ5CAD60DZHj30'94ff4`U@&[YN!!p5HPaqV'&A!hZ9je(9Gfq(J4)kfI5ZdC +485F(!P85cR)E"[+#%ASG-2mQ"AA+jKcc3$4!Y&pBM%ZTHB,GphFEMFS`%Je$(S3 +cG*S('UGSc-e%j4NbPmA23L)!)EDS'K!d%m3[%k4JJ8U3!)*[&)+-K3JL+BVr$5' ++FV3rcdDS'B&%%L0GlGJqjGMSRqrB8&+3!+G55!C9,*[2c%2krPCi")15FC()R8L +(kC%5UYRr2"9M3kKL6"h*-3m*4e1'@'UH-#3`E3iDq[&cIV`4piJJ0"NKcM&YP!) +&1R3P`9D*!f3`P31b$JFb)Y[9a@MDe$!Kd4&8aJ,R&d(TG(YH9B*UK0a%2bM)+hQ +j3LNHkLB&8bKc1#8)L4P3CD98!+G*$Qc&d+S$@h4U4kHi[R)L#bTHAK+#J,PQ(Z* +r@PDaGAQ3!#%Q+J8BdJB$*Kc)%lXP3"+ZIZA6`cJeJ&A-ErU9aRf,pB'rNT!!&b* +ZEQ#J)Gp%d9)*T%dKC)JBS!FPZjZ"8lrKjhEmq"Mp!bQUAeU-%EI$Bbm)#3#&)Nr +Sjk!SQ8irAFQ'bfbAmfkf*$2+&RdP"Xc)Fp'3!1r8)q1)5-fA5KFL#JdP'e1&b*B +K6QSkRZk&Z%%C0AhCpPccp''h[D"Y8$U8K`"(9'G9*kbCDpi3CGKapbKJ!"eSMMV +c,"U*fm$K8$b5iSQD!@5&Z6("dG@mMQGP%B3-eICG@MR4,-(k4MEeklpkr,*Ed[5 +%-5m`h'r+1A,`3Ek[J$MB"+B+YPiA@Z4l3S[[hV1D"mR2id%3,+SHC0X+R3B''%' +8lqkR)G6)6-!F8)%,+6UDNlbK),UU5&ib39@8LJiJc4Yj69j[X4XE-UiH[IbRp*F +M5-UFXT*A1h0AZc+M3p4Q*I8"98%X*-`Vc)*"K-VH&5ARcq@2I%h#8E&HEX*&)f1 +Q1AC'KSClTP4d)&f+!3Cr2$b*V`U!D(ef'3YL0$aE6dBbc$rHD6CekqH$e!aN1Ai +JC%N**2'JlDV+9i`#N9r'i0@5R4-d(%@QrY55U%J9T6"b,kC9bK(E#J5$(,&h(Ld +pBZqFaa'lQB1-(@"RJ"bNh&-Fe8ej'T261G*h@X`9SP-ElQ!@c&#lVZiKd)5c35G +3V3SH8E0bc8Z2T36k[B5-c+hV&rKK@GkPVk90T85)5+3)a)D#SHhNCZQfXelGc+i +UFj!!Z&kGpN`BJC+A'Tk*4HA%LHeIqPUmcE6kN!"$ZL%9mZa+-`qT",(j5q3KpDD +RjCrGSfbY6PELX'LR2pf(B"3QcT4)aBj5VU(I(+hkemY4BeHK5BdDrAK!2iQ&Mk8 +)YQXh4lNb!"Hd(&FM#!A5$[Sj9Vh8r"Bj839@#8hl!%KQX)!5'XPaZImbGapL"YD +V,$al+8q8[9f[J*&8jK&iCqX#EpQ,#B-D4$e6-qc@2d`VhaM((G@-3hU(!aZJ`CX +TH&5pUc%r$d0!lUrQ)"c6QGL9C'8Xc1YULF*a1Q(8V+$`G*bRaPTFJ9I2hA-ZFQc +CkFcV*!M0H42e2qZ)JH3G6$B2d1#E6B+![Aj%cHM8863MGmrPTFILmhP+8!THZX` +H#90&IhraKh!iVMY(eD-3@#F&3AD22NZ"Q8d!6J1qcRENHJS$L$+J+KEqr$8L5e1 +M'%XT)d$c`dD!MMiRN!$e(liQ0HpaRp&qf,$dYD0VlMR(LPZc8UA0Ljp!i$CTj&h +LCb"kK['cX3ckcFR9DSk1b#LS1PYJ[#dkG8Vl"LTS422`M()i'f&%+B18T`PE-l$ +AcK@qdhQ2laHSN[Y980a1eEJYb+,`T!*`2mR9Z&aG0BiViVTUR$e205lAA)d,UTA +R`C[[@J16kNkdd3%brE$L(*L0JX9Pq'3)ibNCh$a-Y6V*M[UGP*k4NL3Gc%K2Y%! ++-Mf&"-SfVN+Y1(mJ#68E"A,fmY,3q54PRKMKB(VB68e%LH)mcKXL,C)[R1+M)KU +dD`m&l@BRGC`0)c'iQeBkkQDfDLb(UmM,d#a8@2'L3%R%F[)i1)eU32a8$Q%&h*K +mP&k*pkGcS'j6G4Yc#!5mX+brT+p#P(BjH2-II(R4E@BJkHD#r0"LPp!pf+Cf[FH +h1U*1GELH2CehU&dHh8,5,CbkK8&@dDbmkV'VIN9"+6YZ*KE8$jF!XHAUGQ9*F$a +5bFd'V*iiBb$0GBS+CL8"0h8F*X&PDQM!6p8p-[*9QSQD8TKCV3SJ$'e4L[U$rah +1%h"%bcGf3'[Q(mTeQkiVFC!!Ef8AH32MNP@NMGM18plLDNG5e@MrbUYX%!(h4aU +@T8Rd-3GbV@B@0+$&52K4Qk4#AVDJm16%[T83fp1!T1ZcPl@U3Pl6d'Ara5RmUV% +hmD'PJB(F2K,`0@HZJ*LUU&'FipdK")ND!3iR*+8H[CD8,YNK9`Q%'L(5iV25Vm@ +YlUMbKGaKhMbP4ej(PDXSIeL@Y`UrlDJ+B2l0Q98L,c"ppXFd4'R9l@h[PI3@%15 +DCRBfb&2LCjVJaerj6lS0@QN2AYBp8!Ci-fq&NK+P&FkGX4%r[#BA2`8X$p*I3C9 +2@f(82))ID925QcSSSaq$9R'-K0PpS!AD)rQb)ff+IL!+'U6U*30l31"UpQ)%``& +iLfA)N!#d8Xp0)MMmde4iFdkYK0,*A$PAM2h36e@jKk)B6@JPiLh*ZG%K3JiYUM, +-XUdCL'5095N"!Q$0V0l!%Dc$I2'0"0&M4YbV&dXCF'5fcCIceBVA'$++!VciNKL +4(qB@),")c(-e'eGfr9A1Q1SjFVUBG"jZ%PCqQ+8#UMPS3Pbqh(NGEe'H-UjfhlQ +9fI$QVF59U,SF%9ej[#e)p$-pDLX8P)k'8(S@84,jSJm1GdeI8A#S4Zc#QV`4UU# +aT105m"i$e[J4-p+MU!KZ#kq1E[0X&+*YikEhFT82'9P!`RlZD!AKZ9+,hefN&%9 +-3@Z0NKGI3B"8%N@j!Flp8jV-6SG*48XCA[NdTEMY8PTjfVGK0R+VG-LN"q[#[p- +KC8,0cdMQc['qlG)VRaiYd(G8$[H((250BNmQEPRTT#+!BeFq!4bjNQjKdLdmHV4 +Efk95KpqiK"jR4@V[#J#p(,8L"m44`diTDNC[lN`Vk65[M"AMT98T0CAK6DXHRJ9 +fae59(9FYVdDR&!-bZ8TArQ%!-Q*`*F&r564XD349XM9L!cI*!BEjQ#9L,$S91X4 +B8p+,Pcbm9'!lC#E`M'k,ZQ1-MAQ1qA4eX((Rj)U!'r2@l[jHRFl*cj8&XbJJ8MS +ekdJf,dr9rZif!N32V6!!M*B'#ZCmA2UfmK)[aei#5&E)R[2M8VBEA3N"adVCfS$ +bF&+hYI%5!&c[kS2Y,&a*BYb@KqhH9E'R*rl29P1@j%%bKeH%C&l0m36+X8eRjPL +kHffRm*V1Ylhqb#%)LUD'R#Y,Q)`0ik!m$PfHa'[j53NNV@4BFH3T,9+`T`cVK1R +c9rH8+iXZH40pa4kQG)qDem["*&,TK2DSK)BJTjG%49C+lSe5!9#f5Rd(')M1r0j +LC$[)r"iD41YVq0lLKe!XHH$)qRjCm61mPS@5*,bNjhA)@Ym)045((pJd`!h!%J+ +X,6$VY4R(hfJD&HRH2Q68'Y#NSNXRS6Uj33S-Y1jZe5G3(`(4K`8DUh8Lcmi2bl% +`%FV&*%lUe"4-6(@UkF&'FDq(!NC$,8fr1Y-p*&DQ*U+&qrUNp15M"qfTUAG2Ha2 +9K+kCU#)FMNp0BL8m2AP#H65cLh6aUFPae`iR*q%kGArdLDa3Bf%E1&amUF2&dh$ +amR#kc&3TJcGIGi%%E'C[)j(bIeX%Y2GX%89KR#kaU-C#%9mN!395P`rHr$Hcd!R +#HIMT#me+G@B8!!iQlDUr1&@Db+1DD1lr9206UdbqqDmUqi5k@M%T6TA+qYpNEbM +V1E8bkc2q9&KI1GP,B4dr5'(',8#hHkN!4X0YNEEbrJMp()Mcri6-"[1)$6#,#l$ +T`E3ep(0UE5kk8TRGZ@MMQ8e3BmR'NCQBpG(a9-M$E,J%Xf%GXf&Q0[c8Q6hm&*R +pB83Pl!mM'd,Bf[a[*@%h0K,8eUU%VDhG%-)bXpmb`Qi!Xc+VEA5iSJEMBa8JY45 +4C[HEH3lp3MNd)@NM$jbajXpli!C%(2P!je0a&2MiIp8I[c&1F@P-r-fI#K1V*J3 +KDkfXb(S[*5(eLF-Tk4RbH*2abBpEdM'pHhqm161`QPdH61q$%M(3Rcfq3dcc"11 ++&KehH1h5a!jUDS,8&a)CET!!d69KGS3[TC@b%6PVZ2ZXXT8h0mV4QNL#MB@iafN +r1L"RP)%F)PkP,',JER'P*fFPa$q&"1[q9JbrdLfBKdF6,fMI2Yf(*#P$NqEYX!H +"S4FL@6+Z3Bc[L9,5j3R&L%81'h-,Kf'f-TfDa4MMRbk(Rjj4k,cHiKI'(-U-TST +mdB$*#9N*6k6(P6EL+JEFYT)"$eSX+aK3r@&%P09+0GX%8-)bVL)IUDRLi#+h`8Z +Jmm8TfFLjfiPa$bH9-U3D3@Bke5Y#YhCPANYkq)N5AJT"rHpXR"($Te-#P1+&rN6 +[Jm`(8D*33r*`QZG*KV[GGhi&Y!)bDrc42[hePG#$ED90rr#pdUIrLE8NXl1(0S4 +Cpb0kEUHpQATIHNCk(1*CI%*+H[bTC(!1pkm8"`C(r0lf,6NL2Zm4"(cM4b%LN!! +#N!!m6YjKT8*,K)DJ)ajD@Bb14r*'Zq2a2ciDVh1H9ZJ0U&GmI'RXM'd31pYAiZU +&Z$%c3j(B3mlP-CL&-m*F'f9GSNah!$MQ1+RD!"BJ#%KQVdbVm'ca1NGe432rr3S +',Xh6k3G@QpPfQc!lmeTLDPCkKL[j5'V)(FU6T)Sca)f@H$KEq"K)D5!6*h,clqa +a+p@+VlXG`kjUb%MhBC@'C)p)ap)1G,k@pF5eaj05-a,3c2DT&A+PlpU2VQJ(1b( +PF)CV&9XKS62Ze)01"c15MKbf*kq!em04T(3NUSY+(SPqkL*q9#B+SmTJdmKCbPM +K1,cM#%FFCF39$2JQ"N`iQ,b4)iU5@54q2jFpYf&$[IP#[5m[H@T*SUmU!MfaUJK +%2lZaU6b,-JVQalb8*90kF*@4k)Q94L+aSC(SLC+4+,!"NHL*MBp%6k`N%ZQ6D(D +jR%3EjY5[*)QH@-hjcB2mF8G9#fKh[cR6qIhdj$KbH4j1qXq8p'6S)j1krP2q"Ch +T+DQ@DiIM8JpR@Z3chVb@"IMP@R*#A1UHV&6kc%cG6d3(!!!Yd8&%3e)$!&%r$e8 +&GN8M)(2PlP6IhE[CV)MBh4T0df"$5KUUD@T89H2HZhXM5&@3!ie"5!M5*)f)H(k +9lqjZRT9%U)DLU$('U+SDeGCSBSc49Y9cDcaI2$G889A9@*[IpqdQi[RVIfIHFrl +IFplcr,hR("TF!34"!!4"SNK69TbIEPe4d5hVK@$pXGdlLcPF3LcARbZ5U9h-b%E +6b15C3Xi-UN8I1c3MHSEXUCeaAPVYP+@eBf8TXdQQmEki#NP9IUGUH'V93fkT@Z* +,kCrNF[l(Z+k5AQQYjXF2TTr*!rPAF5fN1L@,[a[hZ645q93G&@qRcH8jDPAm3r3 +[mM0m5Y`d+95jcUI(cC4Z+$28@r&TG+SmKXq+Qbhp3IP!I5&q,*dVYe'pmDr3bE+ +(0iYV*HQ8S@T1r*X9p$Ij,Ij,h(!T@cR!"m3p)EfZ2+[q0IiS(5BIj1ki34,)Acd +8AdPGFU5k2ri0fPpqM6mDedrDTj6`j,J&dN[+YqVKq#+k5"kK(SYrN3k4Rq-ra-f +6MLM,eGViKqNbH3@I(lG31U1Fid[LPNTRPF9UG,b2aXJAe9AaX4@dVlb'2arA59U +VV11GiriZl9"qVbE%Cp)ZFK0[&rHNp+(bP*SAAdJlb'h9AI&lk*rPRIa[FHfP!+@ +"pill50UU[+rZMGp12jDlUGIL%qPlmTIm(h(GT6Y+,l8iIK[pMlb&ra6A4bT6FRR +2Z*qPhFVMkKIa"E5MI*Vlaphl6IT'ZDhq'(qF4XPheIAa[p+RjHriph%hTFh+!h9 +Mr$rT&ANPIcRZ[V4DfF5[aMdLr9ZjT(i5[i(@bkPU@2ajQL5Ii)&a)G)Tj532L[1 +6[PBZUir&4p"JfF5GFHQ5S+5S&q,$DBCX8-9i-hAiC-8Ka9(*TcK3ie$&YLVAH#N +Ib'r`3cb49kJ9@N9TaF#+'a@(+VKGRfr-XY5TSmS(Db0,"mU'mMNM"@Q$AC!!&)4 +iHcL&EbJ9T--@34T6,NMj#'N)cb#-"&1(a)GN(i#U%1D--KP'cXNh'95DC6*Bk%L +6350a)!@cP%3pK3V#-l*9!Mb3!-45%NHaXh2b"8N2c+T4m"N&U936*%d[52Cb4Be +E3!IlITpb2'&h3QjC3UE[piVKaq*Y[R8CjiYp*@YHHY2hQZ(ejl*p1FihIA*6V#m +cDQHKlmHYZiX62Yapa(HqF-fa)li!Al&8X0rhB[3@al&B!K5mXh$heYh(m+ClN5% +,19rmiZ#X8$li3P1#Vc$$*frEAEbc82arJ6DeNY,%a'XqPHS&UXSqeDIhUBT"cj' +*a*XP2IHT,2VdXN022Z`P-**H&DKHpZNc9%kiHPP5pF"2))%(8`#LaA)p*JK1"L@ +!LBq(p93e@p@*9-p1%'8L98e-&C0!G!#E+N-,eCX0HSD3!$)"N4Q!V9S0C9!eba6 +ASc9L#HNXdjZ!0892mI+QR)U8bNlNA'G+mP%G*d`IPFQ%NJ!3!k*-GDB8"X"e9-k +`!TST09N48*hS)'bCqNb5MSSTeZ-kX`4@+J-KTq9dTN%R'l!Z1JL)6$5B8jP+S2H +*e-Gi*LG$!Ydb*5,a'[&5f!6!*S003RbN(m+NYq%3UG&RpaP0"VZ4qq`+*8805f5 +*F'6m0pLj%HpERp'"$%aU0*06!MQ)ml,2U%KfSq`%#MYRa`e'NXPB*'IX)J'P`!3 +)N@"5U0e-CV,$@)eF)@V#Ur9Dd3!%jfL0H0A`$!Zm425`#*3b%FfQ85B#8U2)S(a +fKddbQ)Td[NmL33aQ"X+6+3Q"m%&&-+I%6!S!+TNbb$TP&)E1JQQ*r96@bfBFN!$ +6E3M)ZLdRI5TR-,a!%5Ka+`Bq$QXB0)K*0R"ffNQ@amRPY"fQNP@VJ8LAj&1VT5@ +5bJkIY61YdYM`SlG9l*i%f5#54J!cUe`4*F*4l)3MAcC#(N`i),KS&aef!J*Mi8d +RNlIG2B@Yf)+46A#DUbBULNk'AU5L@E+K)hT%!f2Dp!5,9[a-MbMKG!Bj"Ci0N!# +`$-!Y%mfLQ-l8X2HX$,a*e8HCq)bGbXk6!N3fi%V"$'&m2SAND$dXjBTXm#&D*l" +'%K*F+##LL5Nk8iCYLYC"`"3(QBLT`-&C-2N8KNXd+'JCLN*p,)S%V6QG`96cL3V +)S#253*R6TS4a'!k*JD+%&+e)63jbAN6,G!#8m#Q6SeSQXe@E1GA+`8C6p$jZe(1 +l8EKYjb3"m4[e2NamC%*+80*M4VhS)+#Nk3&-$Q6,l#J+9J11b!BF)9*LBNCE5'9 +i#$icMTXG"#G)f8k-jNFdXF$Jd9IT0R5N3'FJ""["B49(4+[8Sh[eE#i#c`8RQjQ +FM'8f%$NF"#NDV*`"C$UZ8eJKT8G*U0FTV#68J8jJ#"6eLNi[Kj!!"Di(AirL6Xm +1%)[VC@C$,)K1"L%RX4-Nk%48#biifF`'K"F(J4*Y(TfP*heJGV)6"&8k8Fp4j1) +)3fmlESCS6#CcUNd3AJf3!!)fCdXC9K(aJQ+D8FEE)%@L4kDU4qUh$d&"filHACc +TfqpF'jZj-YEAC-KE%bhl46m@ZqEmed,$QS5#BMa-L*DIM2i1YEKa("lGD#)d&)I +[E%SiAeL`VIM(iYb%f!rP`%BclT%qZfpf%"JCH8qch`6J"++Y5-I!pcDVRm8MDG@ +)Thkf(1`3j2-m8JXdZB*FMq4@%-)36XY5ERXNUa!##)#AcT1Pl9'bEcYmKZcm)S$ +Y-$@K@Q*)d5,#I(Qm(8''&K[0DSY-*%$IiTSJj8fAEqqT%Q2Al0Q4QlHY-$0L*kU +QK3QjFNT0#XLfCMpj68$aYX)Ge@b#UaG`G8I5QNc8&R-`[iXm"Q%B8$[P[a@(QQ+ +,Bf'*iS6FaVDBP%9-B9Dr1ZH4[MT+*ZTA#ZEjQ'2rAfd%[M1b90a06LNZ1jfEYb- +h`EIlhX64f)ifi&J83QG"+Q`Z5pY#j+HhkFC*mr@fiNEp10i8TkDCldd%$L[*3$h +8)lA5NiRD5SGj$mbV%)j!dbjC+MZ&`$h1r[eBKf3djHhBZ@CPJLpAbQ1QK2eE43" +q0F)Z3GTb6ACZV@1`+8d*K6Z+!`L`)BmCH+2DDKIJ$B#pLG!Hm%#rY8if60VCVAU +BNaThG+Xf1$S0bA+%SB+drEiXl@f5(40T#)D*LNS`0%[c1*XGBq["HGZ+9qDY@jN +E@lJMJ5P3Qqd(L1L4QQe'#"#N1b2NP+eeeGec@bK,+#`qZ+e`pmiGKEJZDXSVh&% +*a-fSfZbq'VR2(#6RlNiSh,QQqS'HEhFUpQff6ZlPj6)-TTfl#f+,e`3`NQ[fVYS +-cD4C(q4S*XhkUC%&(LR5(`%G(NR9b&4*a2A5)`Qj#CQ0#@0m)QPce$a4iQN$bQN +$HQZcL8c80ZX`pb%[4$#SN4HKSlh(%GQ4k2!M1Yk@M0Vd'JdCYHN"a1mLQ8iQDTY +&Q0p(2Y`M6EDSN5JC)P%b4-lap)eXrN0[Kfr#JQ4mU5I[VbPe*Tp8*iHcmQ6bCV- +kZ3M*4S3#0A*Sil,%)rARimU5b3@X,('d31L$d-0c,l)I`ILfZj[FFTcDUHVN@6D +e5k#f&j*&##ke[fjmYHi08*eM9HYLDTfe#2N)93L3!+Srl0fra20brkT*1fMmIFp +DTFjU-UZc6L)[4U"UIqMTIpTcZrq'Gp$'Ch98ChA$q3I)@b+d8IY$V2iJTri0RX[ +pqdfJEEJk#aZ#NY5J4Qm-2QNlR(eQr(Biqi"CR9f**)a-e0RSQ0QKb0%aX`[8rKG +*Uc6E@Q$+cVcG+pI'lNj!Be`AZl0T@bia,m-3M+3,3NG"5N&G*b5AR8K[bPX6L`F +#qjhVBYFN&"2SjZVXUF*PCmF*YMYlU$SE'dK@qi-5q[F6k3L4VKFTXYq*p)T)AaC +T"j%H%HQ6)[e-T,@-faPAG5+Y%ZP()ZdV8S0)YiPd!B2q6U6V4,T,T"NLr8+N8dA +UC"M[-YHAc4Y%qT0)XaQF*Y+PT'T,23`TUL%QN6TNFK9TCQYT)Kh+d!&kMdJ(XM2 +2-GB,)Yf,+S0)"q#bMq(GcR3X&ZN3N3DcK454RK$Thd@k4+4E4"STdYkXiMk#cH2 +CIPi5b9AD#LDa9k3a6&-cNGi4DCC)Nd6k*828PBNB*p)h4IU852Fa83*%qSa)bd5 +k9D5(4$T&T(pLV!0-1'KG8kd[Rdd#QD!ir,4)(a(T"b,e%qN-N3iAkI0-TQ"QqYH +B6$mcJ6`LV@1l&GNqd4PG44SPdNp%fTbT9*J%Q5,Ya6SJ9+6h4HS5k8U4@N4k8+3 +bX`LD)US8p@c$k-XEc1lYfGlDL25L5'qcj5&-9PMr"fDG(L,pPZeK!G0aPZhjZNJ +I&ZQ[)TdZdUXLr8UNL5*G*Y+2QE*&l2m"*NS*-`dfXjT4c%PQeL#4EQ#p"@AhQ"c +3rAieLCaR&Yc+0[N,!reDT-G&qS#"EQ(@,f+'!fJVN9i5k@-3RAA2+Z"Le,10p9- +,"Z4MU(pPrI'X5-q)p,")3d6k(YX!8$K%HP5N`m5+&cK9iRdA9mASr%qhbZPB-05 +H'YDmT(e!FPApKMRlHMIddcY0A@ZlC#iIFh2cV+1pLSIP"dHd2Y+ZD9lDJie6$hD +ricBDa"lR1UeGiSdkhLDlCql`V*!!8qm@YGfe+26UTQRl2piHDFN)EhQQmlU&Bqq +ZRhZJ6pQ!ZU#6,Bje+"aarIlUkCAGVP@i9%Q1LqiEZpKcljYQEclqa@qMNXjrqY, +IGLjik0)RIhRYSkf2PUF,Ihcip`R,r[$pGl2rqTpYc`kqr0KRcchji3qhV[acaU[ +rq(+3!1B`rqlXmfZ@[R,lamP[rEclPj'"*cirr1Fphclcb,qR[2(qh[kP+4IqY1, +[1qDrm25[(lcqdjBR"[TprG@,6q80ZI(bbTQ(hN[8A4Ch&Vp04AE+XBQr)+IJM6m +&Er`TQmP%RE)+mq[)8A41ZD1kFGP+Zk(`hQ!qERiVZh%Ca#FSN!#QY"h0Zh%+UXC +6iMdT8fBa*%4TXMUP0fViGZ3aeQ3%S1U4$2")8lhU9#mTe'3TZ"h#6B5,K)(h$+T +PETmRh9eLI900$9HR4UMZIC1qP[!bp(F(6&)KUFr,KD8HbmY-D1+E%R,c[Xl06-K +PFi,ZjN5U-"Pji`#kQ0@TlC!!Y#36G5VU8e045jQ+5YR8%DSE'h!R)j!!9c1N6e` +LqbGf'Mh#bj-)-#0(RB%+bibab,'A'CY9GrY*N!$k*ADDp13GG8D`kSkTJEi-D&[ +YRP@j#%`lGFE(kL$lda2@qKYG&-bBVXj!IAK'#q631-1Y$USkdILUBAUD1[f-1LJ +JbVUYm0MGaIp&C@rkmBNBf&BcRSihrh5mpDHRNSNkr5EQqj(ME6kpScV)@LFFa1U +%5+MRCQ5U&GH26APErKXTKSj@LTPCCR8QD'rQ'6*4CfC$LMR))FR-NqSJIkX8p9B +T,RVm)P2([q#F@$eqCXEi&BLCGk(Q[ZIbc2D0+ajN3Cf*kkqCZ2kDfG`k9fG1"DX +-dq8H'U1SJcV+cVe00LA9P3ZFMDP5Bp!ac@hUli+0HMrkME6"JfX#BR12q0L5(jQ +X,-k0h9QmQbhi+UY&ESbZZ[i5CF@8YrYr`S*6fmeU$+jVBMU5#Gj&m0hKe4LB,kB +V`Ka"HMU-*&jmM#"GU533J[2TBBf&cRYR3YYdf'dkl1TLA,`Y2S"`5T!!lMiJLCI +fNjeA5KL'5q2EBiX0S49p9'2deV8DUh`rcJ$[k*M0$)Xl3B5j0@CB[)5BBI%ZT+K +%,hB*d[G$5@)cJij!#-lkc-Dbj[dhXYBBJfLbUdY`ME"N,8)C0*P)`Sca)*)KUEG +TX#PBZfhGrfcT*AI9*Hm+8[dXMq3UNDAEk'-AhJkZ9E)8JUjeSIE[3RRV3KRX3KR +X3KHl6Z0LZARMIPf(i[UGUA[AV#kYmdK,J@YTK#$Ga0-6&aVF)*4V,T!!PJX&SJY +[!pFFUejF9VR3@Pca0VfZhJcl)a2ZmafDFUQrZK5l[368JiCLYhKZi8+*j#,0(Hm +I&eU(#f@3!![QGU(VA(JIZ3UJeYHiqkThqdk9BXr,XHIPi3M("HNff42f1bM'5`a ++p!ledK+LfNYpAPVPT84hJIHq[HEb`RTaiF2RN!"VQK*LFhRd"1@3!#pkY&FN[QL +6EI(HQZ+Y"3R9`PAD,S9#',HkD&Jqh&Sd6(UKXLa,A@CNK,MX1RD%#q&P+%DAl4H +N"fePkB(STIZm92(5-&PkC,LAiZRA)jfmG)-XACVUTD#Q4pCjR3&&h-aAU'H01IM +%k$Pl5Fl$pYU,fE6@AVXU@cPRTfTLSQ%LBLddM&DXK9I0MBm`5L0@AaM&C&hB`D` +Zl10a,V54km@9&mLE$Tfi"Qr@0@A&9SUeZCf&aG8P3l!9S&U%qIRUr1[M81)"cAc +XIMjfIkAh[feRkNH(Njb[2Uc14heX2XU+q5#lq9d%U5pU2he&@ESi(!(AmKF0#,$ +Kbr0NjmYp'1BZNdKG3hN6e`)9D-hcA4iTf3X*eeXP[2SfjqA'3LClc@SbkSc*H1D +B6!ATq30H@ZqPZ2$Y&)R3%L%Bi3K%4h9Zi95eJN,Le9kD#Qra8Rmm'-L4TI[Y%I# +SmhjS1,P`'F-Z8NeQ+BYqShCI4$j'p%MG&hfY9X4iDE+A$P8Ai$-%eB[Ppkh,liq +hl#mDM$SXIfaGrRLmjCM%da@U8G1A@dVYSl*'jJqZ'kMcH&mCmiHa,e3p&2T-fUh +V0hc4jml@2RaQ4FP,4BH22(IXaC`hXpmkqYF$VqplEImE"eqY2+6%VPf6QE"Z4m$ +1AAZD2Lc-+rJ#&qhEbVBdE0hqlihrA,ebeHJ"pYljmPTL51[Jbd&hVlkFNTS8%SM +FcrpHe1fEhpppZ[l5e8FHA,RrmX@qRCl[m[[1IfrrYlCrE[GNYrFk2YlcjelrkI0 +6limqIVrl2lUp&arAihGGrpMb6mdrI6Fem"(I9bQYQV@C2'[fh!pmFbUQ6CNkBrV +-Q-9,PLj2mNqjjaGemr[E6emD@[rJrT9R"cc4lp()rZj"VJVqIfS$@65EK2!,BHG +2RBKil16ATlmjrZ2QlpErZZ'6AcECM$"DL%h-#&3b1*cT'I-rAdCE)eq`-(R4$pr +1FiliE8MkCm1(rC)a[Jdk2$@q$6SmeFJ'RlIqc0GLR!hqdYJ'baE16ek`k0Yj2i` +B-[5hiEm-'mm'Nrb-06re(Ic)*d!6r5N9YLaR)VraB5mfqY&hq'Z-B&@MRp,S9k( +`dIqU6kX6B&EqkpriZfR-J!NQ&0Bq#E`bQU9a%NekL)i'`B4QkP4YVBRCcISc9C! +!2YI3NqAFJTZ@l(`8cq)MH6iIc1Y`#j11Hc"8i48-KIS$(mYIi&Am)4l+Rq&Tr"D +rMKZFI$bDRq0RH5erQ*rK+hJ*IiNAmF2m#(m13`0H4(HrL9[RhX)JQ,pLB0AVI"p +rMHrREq"'f&Gj*@k23NI&mV9m$HkZ5q$Vq!iH`(IbAA`2Eq)ImN+HKe&LAr"F[TX +AmffmM'rK$A`Vhmlrc6IbIr,9I#9kr9p"X*IIi9rbDlJl+i4A"22,2)MIj9Ijbcb +&Tr)NF!1jMHh(rINp(X9[mj[mH`!pcH[j*B!q`Kr`+r`qMPcNIANRrMc[`Rr21r1 +rmrEmEl`Yrc0[ajrNhIKl[#0rR2IN2r0Hr$qm$rq*pqBImBrjql`lr`F$L-Fp4,` +(rah[b[r)@r)rmHEm8riZj!L%PUr`Dm@Em6Cm-Tr&Cr1jr!-q"lpTI!UIbQI`kA` +QMq',q4+qP#q(j2lB`6e)(FAN[3ej,r'KN!$j!@5p`TrP!rJ6["prP%IbrYc0"h% +AVa$rlj1!M(X%c0c%"4l1,r!`ITkIiLGi"(q-Rq4Imp2m'hkFrmJhmqriH[iVhm! +riC[')i&r"F%i%X#))BNEZ)-lH6V2i22jjh`CZ+fjMEf!,q6*I"(rJAr,j`&S"2q +0$`(SCh`i(mCr`C'h)i%1r+Qh*3%#%-mV*NB#Rd1'chJ,r#BNJErJ0h%5@!CTjd2 +H"C!!Q-Ml!q3G!K,i$G,q!RNR5J*F28NIP4fP%5IKl-H*'p@(Z5A%C@830l+)Z9E +%jCF30l!pFe1*maB5&aT-h$-qjSi5GfXpFjR-06$AQlNfc-dPlRSSF`HC@mfFNlQ +Hc$8RlSD*1ArQTK(R8jKV5ead,A--k0`QjZi6GeC(h)Tfa*@`!rYD%(H3!)RbDM& +aPHa!C5jaFL4aCT%iJ@deh%lFq8VQQSMlHJ"c,Z*1@iMEXBZjUm6Y#L*Z6`"cla, +AP-eF2A%I-L0qZ*!!Z%+QZ*!!(5jNiKDbV4DkLFXl`a`$bQ2Qb'1'bjY1A)'AZ6$ +QQ1J&c&Lj$iJVBqV,f#E,jK#hK4PLb`(Q6M%hR,L'lXbacQKJREf9LEZ9Q@$VCZE +BYVHbl@ePjYl+P'eR`QeIaacE`(D'BLrVmVe4c(9KMK(6AUEQcJML[Mc(A$Kcl-! +e4M6AFTJE5P`L-fiL!deN#iPX`iQVQ'1NB'#GDV"0Q$)(Cfi-FicX(-`3$NDDMS[ +--3*b-$91CM)RBcQCkG0CCkHcaT!!cSkP-`*+CmC+CjfDFB`j4V)C$$5$Q51$N93 ++3jI#6*aUC)jeCbVVJ&5fi54'@#'-F%-)iG)3(fZ&)DbeK6"k#@&p(XKS*(!lFjf +CBlB-C03DA-FFklIJ!ZEBX@"'kCGC5lh-C,bmJ6QQi$,VbFZXCi+B,%%-44$Vmb$ +@jd&-L+#2Q@2SJPJ2"c(&IUaRr0LHr&K2qV'GqE'5`)reL4mV)IcLQC[&(,1aIcj +cE2Iql,!rDrIqCFba6ISciIaMQ'0YlKkMiR[AQ@1+lc&D[XHXISqeNRXGQ@[*('X +V8B`@SPMC%-9S)BV4FK3VHfi6HT&ZPfJmhkMa6JMGMCTDCp5-*S4-SkB9))#T$d& +)0QVP&U-f#X#MjKUe`GH0@Pf$86X,S$2"#&f0fSSa#!V#*S5l4Ud%KejUJ4"Te)V +')Za(f)!3J*!!JI!Z`M#MGKL)$f2Km$S%Ik0fa'h8RMZ'8)P`('%Y3Lk#!H%"K11 +DCTbUD4DITP@YeV39[6AYF%Y01c*Fd`kedc6aT+DC5M6Y3UDQKFh4Y21jQREL!)+ +SD4&PQ[EB')4V#,ddl@3P3Mdh$PqPSTdQBT@QIC'[DkVDDYK+)-ZXdE9dY`QD +%B)4N6GZa80-#mK'1DPTDP&l,bG"VEjMdfU[lpGSK*)IDk6A6DVdQq1ZeAcN#&RK +qZFC$bcAY'N+,FNhI'm&GVPRd#"%)CH9DD@5jCJH3!,ePZ6CUBENfH!a#Uh+YVU4 +F'hLrA2-#k*@ZjGS,aR+Y5N5B9kipK-@(fT9VSF2,Y@FD%+iL0#rAdR,+Y9ZT#*K +FVdABK*!!J6#LA,Ya'Q%$3J*(K$N)VR,0Pid!JAb&#$F4J-!(BD,Y#&L-0L# +d4F!QcN'3!(0!I[BB`YabV4E#ejj"J,!V0L)i%6SJ$%AS9kk9i("*Rh,YTA-)Z3J +2%+#i+"`"'cfmU&alEPUjGQa@ZIBL%,kj[9c,,N*BKr!a`VX)dmZeYi)3HT4V4km +M(#rArSU0lfY6VVeQ39!3ZTGVqimJV%+iL`"$[`(J0b$8'c$#'jh,YB0H"$!23N% +P0RI)Ki"18Ic,04Q!iLN%'&#%J1BU""MV!K4IQ&UZKD8K&*GV*f#BL(d)6HMFX4D +0CeY!R4DYP&XdH`j#-%+b44Ye%Z%Z`K+,PS@&V,B)r5cDb(#%GJLBj*X3ZPQd`9N +)ESY@YmLL$Fa%!!,GA)[Qk@V4[*8@E@b!43[YE0'H+E4SD9"kkjS&(@V4cN9CY,0 +39!Z%+qiJY,&S4AD%9KEYF)0&1a*MdBl&@l6XA4EYVAd@lHKpLrCk+J)8R9L&J#3 +#5#1'@E6(`(LXY88lQBB!S00R%+iL3,"[)-!hXbcDF5Mm%BGq$E0S'b`)f&JX$XC +#Z,8`3%!G`MU%RKDY5@I"m(K8N!"*9*`qBcLj+Cf@NRX@TC!!hUDN96PRq%2AZDi +1`l%9DA#@LAUmKPBN*[0A6$5XHNCeiAL!Q*,-Sqfe2"qh5ihKTF#%jd(pm,!jRQE +KlZ!Xh"IS3hAZ!&0#eZ48jd&8"J0iq3(FbfX$5ZhRQj!!GaZmf-VM(+-apQrQY8A +m"5qqT)Q@HUNERc['imjab,,@DqK"C"VZ08`M$kb`JdXE6%62-,a)$cELH4U$i,6 +('pL$9i64@6c,bd[2L)4Pk%f3!%le"[EQKd,T0*kPik9ME%X,b9+-0h!KVpKN#'H +(dQa,RHNVZ,AdT$HN-km)2FF1(6521e6L$9R)%kY%YZ+cV546CXEJC"jlEMrAR@2 +iC,BfRDaPNS6CkMCXpDpBSAl@*&BJ2%pMN!!D+d5-Ei9H9L[dJYaNDC`9Q1$6[)( +*[')M1TXF#V8YG@&@521'G1%9DH0CBER9#X[rG5Z%%#YN"I#X@PiZfhKNAhCfJ`Y +ZDUV2&)2aQ)-'Rq5[dTCmIjCmqaJrFj*RCr&S'X4$Mr*Aa[,S#"1a'clPLI5CD$i +X+%ZlPTJC63k3!"eAXlJ1Sil@%YUZBAND6fd%!T*[ldhUrEB#26e-6,)$T1cY4%l ++IeX3)1Q6M`[#-G)k[M+IEkcPhqAc@l9mIcjr[CERj'-!)cqCcdr8FP-qPf[jZRa +H9-[2jR2IDTYp(e#2aq%D4V%YcF*5F(8NCK+QkLDCaqZME0UDC&Jm3UE'cL6$0)a +0bkbCqS#KC@E!Y-QD'HGkJh9mF48'"0IKdVfQEl1pPj2jUU-RH@J*YiIbk$(Q'VS +e%B!-Vk-e*fepT-I4cdFXHaAN!U02bNpDcLZF93jme9FPk!eh'rHIjdNDK$k[FLc +(ehrCHR'H*aLmQ")D4DaDQQqMc"L#SU-h)iEldT6U-QLSR",F!TacicM5j3dBXj2 +6U#5m[-'8iDZ6lR",U%f$fh-TNJ`XfFpI$q8jSIbP8(i1$b"#q4L-&a2C-Ac-hei +dY1IM*X'0*J@0*TXE6IBeQU69)"+FG3S[*`f-+8q&mZMD6Aa`QZ`icZeTYS9KZ%e +5CbYa'F5BlEcFZQCPk3*U@'j2#'&*!E5He`'2LBp+XaR8eG1'#'NI+p3'DZ#@kR9 +d@b6Z-cG@iJEcDJNEF$HmG4+*ZmEdC1`!-CqYI!NZ%*+UG0bHhjJQaRK6mE+iAXP +eqmRB&QPNQTNX,L(54C*,%SlH#U[K")2MUiS!16cJTIEU-JJ`)IJ!365FDD4[ea* +6HLbH`*52UAQ"A-B,4+[Ec204jS4LN!#ac34NRrP-k[i"TK#el[MS!F)QZJ@D,#G +9T8h!phQI61EcRDY+q"%lAe(&Yk6aFfPm65h(9re9KI*EY$drKIDlPVq*@3irNQp +QC0bDk1-Nl88Z(&RDQe`fXR5jaq'ZBS#YN!$D'E2lIhdN(NIf[D-M6KbTDARr&@$ +MC6mX9qK-[1i-(d9EmlTm8c@KlQ00$CqKfZ@*@4EeL,0eQaU4r'9XGBKd[BMM@f3 +p4lN[AmR`Q2MB8)jEq!K9,V3K4EU%A)*c'k9@%r)5f@P3'P8[9U5&mF'KC%L+2E5 +kK9JE$b0[d9"F3e!3-NI"&fPjPF!rH2R)0&j(1r#cG[B#l8Jqk'f@KBqcTT2k%#N ++UbCN!p!rQ5r1fF$(H(P@%46cFhCV,BS"i[BlGMUFVTk!#5KBBMlHPHAl)+Ge+GH +ERXaMXMGbReGafSq3!0%X"&f,DS!3+lUe%c!"K4IXUUSMh+kV-6F!Fl`K3&KPiPP +MdE5UAmM@NkF)N@FBMj'QJCG664[(m0fDeKDd11FdfpeB2[MBH,[ll"4Z6lA+Xhi +#*U"#L$be2#ZYXH*`HS!ek3-ej5pj6BG2f-3cBXI3j*VbH)!RLC48BfR('PirDcP +9eUJV)iFU4QRe%59qZij[dr'#dc`XJLH1j@&er2ec21`S0hYjC4Cr,CmIeI%A[Eb +SLMpmKVLMqB4EDH*2E1*l+[Qf+M24d498%mq46582c8M@eZ2SVb0C'CT"!mQf!qJ +LbD,)`c55h5G2dMJa45&'qqeRpX(X'QEKeE10Q%99cc$m`0M@5Q$'$L3M40f02'C +MDHGUCBANZ4bMq%jSQFdEYFcr,AAjrb[U(&$RHBI!'HlQeQ%A8YiD84Ti8*!!pQ# +`fTj0XM3`!-'%F2Um0(#$HC)E``cMMGV!qHU"(*2HYG%)bKH0%E9L8Y@B#HT!9Gk +Nj*U$'$L&JHblPXK"HkV)f8BV!c&ZC"FqHGq$%9Dk0)L(Q`Teq[15,Rpd)JD2Mm+ +jQ*1hEb$&&lkP9I'X1PkkX9(c#[8kNdHhMr&4B5[@(8qi)1XFaQ`bX)akeA$D4C3 +mBf6*%LC)1HYPkB@0)Nd@T*fR(j-fM(e-LX$0*98`Xli!Bh9bC5QY&rSmi"2(V[B +Bp3FE#)ip2T,Zf55J&5(&NfIQQM2R*Ll[$(1EQ(-bejZjkH4SJ9F!$E#dTbcPS`, +h"ESfIaT'Ecd3-)),NkkbXcL8SXEL+#kMX@CRF6FDDa5Gfe$QBj6FYK$L(@8FDiD +b8p3NP38)KV)'DR+8"42%CFd&2,@QUmc5&Tf!jp5%fB![f-M[)%X0f&aq[@aS-1" +J`eA"d0#HC0f4Y3''KL8%HUY4-'cGM%()@jZ`Z[@Ui0cDNj+aiYZ0!0VZ*8$E$`L +'lHZSbEGG`-0VaPS#h"ECX,F%4rFHa0'pk`A$AZ#JHhf%&d9L&a,lN!$90V)dFVN +XhDP%dP*fhR(59AS4)i3%20`Q#,m-&k3[d88MBCpV2N'kKTXm4Pl(C+KJ5,3!4H) +jC$P!Q"K'iLV#Si)MX40pdHa)A%,AQ"ddM%aS0aS0SX*e8pCqf5(0)qJ0YB*ND!) +,+!hqQ,55*AXVQ6V#*BH#("h[b"3-MU'3!0mCER#kS51G$-a1Vi@Lp%V"N!!H3DD +V5#`Q-CM%"f5e(9EI*G2T*!j(c#!#CrJ%3`Ba6%B%-KabCMbJ2P6h8a3-fX#hS0K +KLj5H!UU64-682S+8K2H(23f2YX-0)84a#'i"#MNT5k8BVaD5+cK#&K,+#Ka$$J6 +Z%Jb"fk%Y-!5JJHMF`-jN5U`Gf",65'6"GB)K1"[mB"1*Q`N[8m#cES)SQ0#[mh) +**80r,dF)H1$01"Nf6P["HEN22J)A$CGK&LR),ML$XJQG'S))SU!Q-1TYM)m*S`8 +BNB3KqD'Vr!k!k4FZ12d+E8ar-!ReqF8,"[p`C2kV"6c!*R[aKr6q-B3h3($H1d@ +85[H+"F1pPL$!Hk`G4GN&2*PQk6l"FEX9k0ea-i5ildh-$5AZlJ2LRJjMEKMCC(d +Q193r5b!AaN[0dY@fJJ-$#M5cid&EX[3J8R"F)4hJZ%*DVH&q+15i[ed`h#I#[Q` +4R#r2B`*G$"-FI@q5-hd(#)lR$j!!p2RkajbKh@J&1M8YAh#N(8%EP@kC"-FY*kd +`5pFh#0*eh01NUjHGCmr3a6$$f3,-pm[5@Gc(@BYb5CFM1fXEk0)586S6,$M1$#" +i9i`4R#X@dJU-`#e**TbA@JL1SJa#e8A[SY"p)"Z+KN%mI0f*mh!9ki,$'p#rKpH +45+Mc-'R[Kre2dP"C'Qb4(GSeQ-5TYD#,-5T@h`jIA),@N9mQ5q@JVRcFDQA4#dj +,'9f+p9+8mABF()N[4,#hT'HaZe%,dA,3J!H2%D6""c(T,MX'Yb+LeH'HcUak#)@ +aK&P!jJA58AJT[0)9P)c4A#rJQe&H+-)N5(CJ'!J'1PIKq[fXf9&&QUAMS4+k`L` +p")NHQJ@S!(`J5XS[ac-j!$)m3`UjCkib6R0`T,3F`CQfJHj!Ik5KifkPNV9ET#a +fAUqPUP%dA0q%R9r2%"cA1j!!aHXML*3h6JZ''m4#0`T)V!I-MBk#imBF!R2$4IV +G4aU*$dhFi5XNE0p0aQj1f!Ya)"Vd&je0GjLPD!053MZ1D0++T(2BiMQ-@E0[aQH +S[HPLXh6f'&SXLVUcF`9(l4PdQk2f2QM2mA!*PJd2hd9*m(!(@J&b@&%V'&DJC8S +V0JU1&4e3K%NVKJU1NZ-%IiQ"i#p"X9!b(4KlbSkA5%&TH#NABVld!)0GT*IQ#"J +4)jA#ZNAKj*cP8K-+YY%'@$Z0@YY,MX[3FhMDP+'b1`FLPk)dAjb+ab0+EZ(h +1JMX$XiX%3rCpb*(pXH"iDb2"p&B3`I4@$c!@%FE4ki4a&2HA(L@RbQ6(AaX)kd! +GTU[`+6%Rj,N[4h$X-j'ZfYG"F,b@5G,AHL&G6S$h(a%FEf33G'pd*S`h)*F&GDb +$AX&jF"FVD3lHK"J(m9+dl*1P9r%fX*b4RC9fZUT+G"lbd98BAhkS0r'5iNqS9RE ++'qNUP&CbHm%Kpb)[3I'8i""l%M8Lkf"c&D%a-aTHq3KCZK!N1#ld)3XATK)APND +@`iUa2%H@6L`8("&eC#&L(a%aSZQN)CZZ-C&aLH@`U$S9#DU)'Vi*3fr!jrrNZd- +N1lDGP82DIKC+&ea')Xh[*MJ(Cp(jH)%2GY1Pk1bk4B*cB$*MkHBbPUHV)(Pl!"9 +3[Z*#FN#@rV#IM&bATE&i#fUiiI%KU0A@bP*SCb6lF)p!)Gj`8KTHlaV'4piLG9F +dYaZi(GBi"`3B4@MS,"UL%30NDM(kaBM'ZH)1U+X0@5SK,,`"Lr#H8I()YDJ93AH +BE!fdF35$D95m#)r&)lNT1l*h%B*r#efK`N"(dF69cE,dHUVJH(d43EF2`p'QbBl +p2[,UhFpH`'pFT%2-dN'-3F0YR*8BP096GKlU3BH-%CfbPeD-&CeL+Kd#EikK3qb +L8q"X-A`c@lc3LLfH2dB@T9-B-iDE3NpKV0iefA&L&@P$*aB4&e&)L[+)BB,MC"T +*6d+Qdk5FN!"1Z`A(0l0SRYPa2)SQQKdrXPVCMjh)iSq,"'Nc"J&@bSl[ZK$1HS` +i,*%GklX6*,q'QI%KJr&8FBLl(AlqFqBSakeKmj`j,GeZpc"AT-Xeh1QFl()0)"( +jE*,h@i`iC(KL-B$F,PFraKbHf$29jA,G"-FGdQq%ba@ja&ApjijdIcl"kM,V%PQ +-L53STN8b(qQ+l-Ub'6@-CG2GlQIG6)!"B%'Z*jBlRC&1jh!Va2!TimqAZGfri%# +NqcHhqcH$`6$!2Bmi`TTTbaMJN!#T"[Bhe2f%dq8HB&-aV$m`,(,fX`,pmZ8Z*a$ +miLC5Mh"Ef8r-FrCc$hHkR!cT!LHa9+5l@8L8blNF'*f'%F`SMmj0p9p%jY@-C0X +CQjM*l*a0$6XfR'#"m!X)qcGQT-JRKT!!fEG)RkdjZC4Nbkc6jGCNf!)#&&1YcQU +XSBqfGQeI[h*cqZd32k@6dNhjiF&[I3-rk[iSqqX6eGm[j(Crrk38jCr"k8(TbZE +j2CqFGqQhHI2R+jZB@j0HIbmN*+Tr80rK2`qrFR(iid&r(rj8I@"5Zj!!%-A3pEf +ZACA%4U(,JUj`Xq'8Zb%ZCmC(IX6KD`N,pYiGp2rKhplMK)EGr3JT4hlkJCAF2dm +FkbEFa1"iGpbRNHkj'Hm1bdLmQ2%CR2qeRUk[A)P"6PILiemHQqGDN[JVD#,aCkI +V@V+KKf'DBE%,24[RFXedZ9UirQMih$mjbZPUL$BBm!pF(0rbDIGrq!dBTY#r-4H +5d[H4IX2DT`6MTma)5P*kY4[@@HQ%IMY"1UrY!18$*8)jIM0GqBRdb585AcBSj`f +A$GcfpjC#jES,LeIf(R&9@ABL,#29,cA9'CL4'V,jZkK8aBa`FYcrRe-lT[k8qR' +UXM'eje2+PIH8pBr,Bj8C#Vi9NEqJ&$T#a0FjRVaRh%bp(455STK5P)LE5Z,h9r$ +&T"R"JF&%)3!!(,*"4%05!`!`eJp9$98f%4!KBZj5rffIUNGjNCp,VHdSL[4FPr+ +Q5'V$!G'#!NqYK"j&NHT+*M+Va9e(Y!b@4&I"1Uf2Y5[dqB)"HfAX58M@af$'Qf# +#S2&N#HBB6md5afGRFc,M*DbAG6$ff0M"a-'FPa#&IRrrVjqIC-MNpR+I2aZQ*`9 +"N!!%34!%J'Mr1mXlA#kmH2BB-d(CQ(Llk&pV$QXqThd"Vl9,kFrC9N5BX`'9I&a +rTkDS(AEkcU#DjRcmS-Sa@5k,XH0hXQTSI,&1(hXp(kr5G*rb$T%a%jRR2Q19*H1 +,ReZ1$l[RBjhRB`[-BKlcMQci59[)d"6Paa)ch'[i%39+,a4Pj"'fl*Jm@YF`eDI +Y"1MrUU$mY$2I5FDTmBIHr'42YSTVGaR+pUKXX2V(k"BqHE4qrifHLGqUf@8YT[0 +336[#,9S&P[,m[(h"rXX0)rcSF10"Q&5'4XNm&aLFXp"`0#I39(CfKmmBJKLGqiT +j-S6Q[R9#M1+lM&9d6*KRPV$+2QUd#PcXTPGY[QJ4h#,Z84["UbTFLTGkfi,Aehk +I,m'&`iSc(6SZT$ZDr+pX&l`JQABh0,"V4*Jj$'$jq!m&0DNDJa'KX#3ciH`-5l( +[LQPZ#pR%22pD5)QNV6(Q8'29r'ZS+V'l)ZR*RY!*Be!iDKaUlTliVAYlm*JJMqC +Y0bdFG0VLiVm@LTTK3j,+&%mM@DFDcX!@-K2%&!%'9i-"apNGXX6rBZAm'HFZ*1d +i2dl%-QEM-LUYbF[&59MRdcN,04669b8HGkf+S[$D)&jYNf*KFH2l`fUY6'+""#2 +dUR1KZ('qiY#*FjqGLdG14!eP6[(edA@VmXD0TV!@51DJ1kdfcVq63FGA(Gk68iB +E(fq40*PYGM4N''*i!-EZbpMDEU-*DDYC*+h1chNT+6+N11GdK'a'Ip%FYpfcM5Z +S5T4b0'hMDL%f0eSM'S0)lF9-+qCfP`T@UVir,#*90fKdCe0HK8GE0-$--G6mV%3 +M*+4NqU`5dRY&GZ`q-Kl`)pjM)kPTbQ5(aAaA%mbH"SJT8eq9Q!&L!rEj(P)eIU3 +XM*63RXJd,hJ3ecJ8VMGH,N#PS3"KXm+@b@KiMh8-5$1Ec0r41GPckm1'l&8aIid +ZXr&D5$(kV#-EVp8UK6kV8Z`c(Iejjqf61%jRZ1Jh32#`aYUa(SqlB(lH[L`c,Sj +c1E`1'b+qr6qPTZ*N*[EC"@c(AkrU3JT'c+ALU3@&R'MrjIJcA-bTF13A&'$Xhje +YqL-84!X(Fe*)H3feR"hb0-F4EA6%X&,-eUK'hVYi$HZ'$1HF[rRqJeMB4SJJ0@@ +8pbi!B*4ijK!rE-fG54khVBl+b5bMVl@V!pEKckkAL+fG'1a"['a6U&3b'411P3# +U-UmKim4aUSU6aDkj5cK5SmDH8TLa#BLQk&`U,1IP4&(`-Xc),bF1##e`QA05Nja +D#$JkQPCeKe5QX,R93Km+6k*6Nj-(JG6"&"GRZ#Fp3+N&AdqGFJ1*!CB-8)K38LE +m,`(#QDE9AD4NX689J3+FXq95"*j+EPq"a&`M&-#BNmq1KYh'b16%hm54,+TqTl& +`hDQ(,%8BqbV663lZcM3a&A#D+ff*X',I3QP'V5,ep2!+*iBFBpYQ(K95RQ%Ha8+ +T#!b`K9ZF!%RBFk`FP((UQH%9jP'[NRPp&%)(dR2FKTp51Sj4jh0#JHXiePq3!%5 +(%4NUBbfjIif,F2XV)-jRiV9NMX4`L50PbG2fAf*!1ED`k[94BUB*GYQkA5@B@JT +5%Hm8A)Zb65!pP#hEGGTAYbZ%j&$CVK*maTI*Z-q2E0fETCMBKSRDMa[I,+@*jXC +G4jV4m4l@Gp8EC@q@hJ0(21e&$5%VSdE$4L6iMQ9H+cl,me#lXE9lZBDN8T)2@p@ +L#DVJ&+9f409I"E08hX6S)!(Ul6P&*+,Qe1,RVc1Ql!iYXH8`9l3Ir5ikdUFpPLh +E[&4,6*9YRUIYA"4Ge$ea3&03!#aafiNS'22DMpBG4XIi`k8pfJqhP'fHSreS6pR +QYl5l9[5XZ*C-Erq3!2j1IAK(jkfH'leC48ZdGKZQAb1m!UpqRXrf`A@0Z5cX8TG +Q*``63"*lHdlCDbaKA6h(53NJ*+XD$kk(+&1fDfjBNNb8U-8'LlQbZjjTkZ#f$4e +XbdXT*3K4VhVEqFaV9LN6mc#QL0&`)0GP!rNfV'rrM``")-Q+AP!j1qYm`f%M@qB +EpYAYILrFBQpXr0P@1"ZhM6r8q-@Frm0HT4kJEUGNh"BjF)%KA8lCd$IFq-e&6Te +e9`0"jqT[@CfFU@!9hFiBN!"i&ZJF#dp8TVFk'Rf(CaThEZh()UGFf`pVM6qMCH+ +(jPP4R**#@H2l*8+L-c4!`38HFV&fj#`QKh@YIbV2Y4j+a'!JA!r$mVUUTJ2Ff4F +Q-aFj5JEif#J'Aff2S&5eSmJ!i,p"B-`I6%"S%'R9+Ji*',"AV12TA5(ck&NYLkQ +FLXR(-(3MG4HZabTU&ZQdh4#4B6Cl(qR,lmbi@XFI5RbLQBN-5-4T5+##3`Mfq95 +PKC(ZRX&9l'JZ[-81+-S(Y2,dM-`'FF$Zj%1MZ0SH(%G`@Z3MfHI$U,Gr+(!BN!" +)Rf6UDB!fN!$F@ip`HpY0Y0E3*"9i!14R@r@fdl1MJBYk"6qY`Z@L6b6#cj1a[UM +PE!ZqKh4r*fd'0Pj(kPk%SqZlk#jfrFCD#D8bJN%`B5#4MD%,V%KMRS3SMdE*Dp( +3(b3Nc!e&dl8%YMT,cDRUJ4ZF9*GRk6bPHEre#`D1dR!T%5H3!'aeq)DYESDFMRE +(iUi+J#B'd*!!qA)p8qUV0kdG'N@A(e$R$`3kfKCdq3&9)VeQM)61eYG#P6rJ8H8 +)%%VXFMd3#0Y`mf)p8cEP6LLEm+Y0UGaPGNNS(9cp6[p0!e)kR8Ti(8#!kGa)lHh +[2FXfF3eq0XAjJTHJB!dLJ@YZJT&e$8MXDNG#9Q3V#,%$hILDEP+"pPfZ&H1ReR4 +$T&[d*ac%pDkph$82aDGlhM3D9h6K%338h1FjR"T8Nd@S58[)hC*dI8Y-S6Zai+@ +&j+4SB-(MrSU60[q3!2$T"S#b'fLrVNfM!F$8iU*(21B@Ik''ZMd+EN,hNj!!R*Q +CXA-Il+`eK*J@EBPSAEr3bb-NA'BlH0k(3)TD#c(Fh[l'K4rFqrX-BpY"E(99B"1 +bKf@f5A5BPa,P&Q*lpBi2(Ua9-a(TmdbAGGi2lJdTBaHYXjPB%Bla,h'P-22jIFD +K@p(YeqP[jIA@&qq2'ZFr[VHJhZVFrL,pVAaarrAl1pq2eJ[B%NTH,HR(321S&3T +-HaBGq'VA2ZNbc'mc(pmE9hkDH"@QBArK+Y[!QKVUT&kRfKIC&dhUp8'PZQ&%jEN +bA`K%6L+-+1%[jX$j+!VSMCmqj0X6`XCr-kiP)$c$C@VdhB"D%53B2@4ea"mB5@Q +25CE&[FiCYXP+A%edE`%4CHQ'%B%@+3I"%Xq#He%*fHYmBrC'heAR$%-YCfAXKc[ +((r+Yb'@RF,(dZ$c)9ZYa+Z6%mZAD%4f%E41H#A9$GNU8LGUQ3+V'HYAC(bjk58` +[T@%&r$LHeMN*BcUIei$QSH((p(aEmY-X4!`#QmkR,6Uk+-qeTde$SiF"60mX%-R +Q*iCYSNkF#'XLr58+PNN-TZheMpH[q0N"Q!3a$+DJ2,iJ#*)Gehe8cA2,`Z[9 +5QHpU[TIc*ef8hUcJlRe$HBL1BVPlC0m3cmiBB!$#c+'"2mC!kbbj5N6CTG4ad6G +@V21pQJ9lrd%,YbDK2V"3Q)35"B%Z544"-)cID8(-&`fq&D@KNb!f&40RA+l`AdB +8F8QDecBB+9-AQ-pme+ebX3YYG9GG,*FDEPbqq2Z0[YQad6UHIkZ5dr'Km2)bHZ4 +A5&!Y),#ZeVE&BZPhT9$FPRjPJ%0N3c9*!K'#M9)ZGR4Em1JfJ+-"6(T)P+mj0QV +PqAaJ`(2bJ#H$!jldM9RkqIKAHZ-1m"%&3rGLml,emZC9r5PHceeVPV&pCjDjIAX +,Y)9lkRRr0rlEYK#Qf$830D$S`bAVS0BR"`qN[elqP6PUGP"5(3mP9Q4rIC&V#EV +D1CfZXCJGiPr!ZJkQ8Zf(EhDG&BcTjLiY3@PBPfY4e+T)U8AA51cXB+jhSkZkkj@ +ehAAV$-A85kK@!-S9Y"dqPEX$+#Hd3ENp+'LpE#*I`5Il3ipCHI9eJ1a-rm%TRX( +(i1-DcrDI["ljMjMHK1QprS*PVQmVK)*%mqPdePj3#BcfH)f#Rrb[0lTF06#De5" +TBiqVLJcL'Si+!cGM8"Q$X&!'J6'i&mVJCJc'3KN-aL!YP%&L$0Q&-Q3C`p4#'DE +-GY&ZUDj$F4AYddTp6GDHp)$K+X"`PB(K+MICDEVZ9V,*fdNd8@La'QGG6)kkep, +KeF[2(H!9[*)r6i&DTI*N4NGhj6cH@a-6TLmP+"MYr@MBh6+YGBN1PbX%P@D9XSk +idAbp)[h%CUIME"9%%`KB13[8E(&X&-4&I,D58Kkl5-%fD#aIU0[9eR46`bP3ZH, +*qlSJe[VF@BeIfRRJb8*UmB[VZf0C0lpd9iIbp#I(1jq(FrZ,khYNCp,b0"T$&A# +H&ZprHhf[l*EkRMjhJV(DalAa),-5C)iXLrQd'qifc%DUBQ$a!L'V3L"JM$#!YHX +fX[jK@JL+&FX,"p*I3ZH4G8LA6ebrLB#C#Ajhcd6qj",4)I#ka9#H1kA,8"#EieG +Dqj%mf'4F*X-#kakiZ)Fh$HA$NEXhdXH0XN5cU5l4I,0V#*hbM6e$*1"Z3STP%i5 +a%LL4hR!fkqK35ERmkIpqSVM@12'#@S'#X!TCch#',0&bC3Zrd@GYb$SD!J2bVQS +-b,-"eHd([*!!T`'hcRQA$(h#TR#N'b6),IG(T3U1)QZZC!J$pD"RG$3ZMN,"#&" +2@lkkHNV+kUQ2e&0RBe!eB@MGBafNK,X*2"J5@THY"fT@33PRqrd9lhr&N!!YdpU +2M$k&$0"0)VhkN!!dACcGQVF-IaYf(!6mmLV%BYAb1DBC5P$Fh5Z5d@,rT(pe*kZ +Jb,$U@SqDKLKKFP!bkqlH!4jJEkZQ`AlpqHPl`6lE3e2[XDNrBSV#Sl&G%AmLXM1 +d-VLdmrN00,M%"U6$m*9Xq,rpFSH,4TmTLZR8hG%"6NN9pji*V[@D(-5#SXEA9-! +dG1iXjlhM+eh,*6@ZIT!!1(XQirb9!bD$P%N[8Ai9GH0c9Lp4jFpMHSNSIilT*B, +mH8B[LFLI3hU*@rkmUTF-d1IJPlKKPKIXV9Y!(i-(45k*9T8@'EYJ#NcHQE0Y))A +$K2P[9e!$VidkKfQKN[FrP%KX5!%c&#d+i5dQ#lR9RjJ[QKbLJmmP9A,l8Apc&J` +'8bc&aG$`H6)HL-iH(,P9kRZj0kkZMU+bS$Ka%pH*r'1@bmHqb3jKdZrq(K"'N3& +`d`-+jP4P80cd!)8j44NS0chJB8j""Xp0$k#B-b)$kUB(C-cTPN&fd`-mjKcSIiD +!adb)[9$N9rZ[l105Re8-A"C+-c#pNUAr21$EY-8$2QDDb#Q&Xf5'MIb9N@GTQ'L +i)DiRMSEGP,#Tf($Id5I1ABp5TDJmFE%AAAGm`dlQ+15IH2&SY*JfcU+TFG5i*$8 +apABPd%8d8"0Nd0k-T*9SL(0HPr6qEq,-Ek')Zc-Q5LfNa3mH[-h6P[((TrJ(pk( +J96ZhFI%X25FcmI'$&++3!%Pb%HEHVlA#U#rTch-TpAT["j+)QEk6[EGJ"[lXqZ! +9P5-NE2R'cfqAE[`*9j&-&T)T8`q*'*1pUhYrrmMh(m4L&ZG2Z"*581$H-Nc'$NU +*&3CI`N-caSk2+D&hQ)+BkIaKP6A3VPYY@"D$@"*K%%C,a6$MP4rq!&QJH&'MlJi +"L&I-c#L'*TTRJNbRjY&`#j+6eDYkALe&U'29%qF"X+TZhIS)8TJ4PZB%dB*jr"Z +HDiKSlJVr+B(M+L'qj[i!DL2jKmdT(Z(Lca&LaTV&DMBQ*mX#)HV8r'DGb9i+GJk +,0hE)"ZFS$fG"B#p5[`M3CYGld`RcE%M&`ciZ!1)4QTaVjJ)"2Cb!Da9GM5R"(GL +-YeVel&BZUm&&8)4C[+E3LY+iQBp"caf"6M2$5Am9@'m4lfD*'0&D(LpP(b'2ifS +maMk1H6k'23a,2)jem4EfFF-cS-($N!$aI03-d3X)58hY[fH'I6CKB8HK3iTCJB, +9!fB#J%h*jVLDU*B2F&$3q2"6H%ATGBP9,V'+Ne@FV(+H9Fj([Gd6THfSNcB'T50 +mbTLm)5!GpQjaiZq!)K$Z8`C,5UDfKk8T2$T3DFN-3U'jNa3DV54k`TBh,XihFH1 +0#j11@a0332Rkpq*0LHj`X9+SQ'E-!i`j"@EPMBZC&@#GZA8H$B98r@+Cq!J2*kG +'$&ij(53V[(caMBX3NaM+I@GQD04$AUPre"KmCCC2MDp%!Sc3DX5SjdS!Q3K4-QH +jN!$*mBJ"&%'QJiX-j81QI"HK9(akEE6FCU6qr[ViibS(B&-[4eR&+'S!TeY,["i +0ar"6"4@EdU*DJJ(mU5b-(iBU9ibBr!(ccK3*iX'"!RjDb(35('CU2`M+BddJ%"3 +S,AlRrk&20PbZ(G@8kQNb*%*a-C5"XVr-$YmV`H!()G'$h'5m$0e"eF1RVIYIi1X +LaV4F@!*)RCVM4HV8&d"U%ekri2HPBqR@I'Qq0VmcIc$p48VqQdSY`HY!4L56SH% +Si%Kie#&2K6DR'Jimk'-CETC4&QB&RM)4+e)F$K3iLhc&QM'RR1DV@5J4fh$cd+J +(dAQU9&i1K"4'+"mJ4'4br02,jSphL0)54KM'UNXJE#a*iJ)C'0JP#B(D5L&&**6 +prbAKl$SEqr&1@J#2j[320dpf$Bf@Rr)83M6A1d5fm",rK58pk!`H+X1$6P[!QI3 +k5i1$HG[PF3MTUej"b)Mfm+F2$m$T!*Z0`-B!i39rD3!3k8F@"VS[DrJ[f1EPPlP +jfDpbUG*fC1AYp"`SV5m,T-B5li8N,EKGTGLZf+F!CPXQ`'4ebIRfM2MPS3UC2rM +lIJKUDhI)`Yp'D#b!T(Xr1)8NG)@R1Q4i8)mke!b!!%@T)Qh[PS492k(der`*2Q' +eX5-S`em-M6*9RQ&%pN'KGE44k+8l6N%VSDM,K9JZ[ZM)H,A&cSlml69Y(qd3Q+# +4BFRTiRQV`ETLL!bb8MJF-&p6LP+!103PGb&VSh8RQ3NlN!#+ZamGC6RVD#0PSdK +`dH#MeL03,[4S!+S[CCa4G1S@UQ4fjQcM*-JFeFaqNePb2VNH3X[pl(-lI@T3BAX +Ad'1SE-L3!$`NFikZ4F(K9*dINBmV#kA8GC&!0V'B,qILa'*%NN[$phJkHUBD-ji +3H8UjHcCV8e(H"V8IB6p&!(lZXhb'+hK0F"82G%D!VV3a(9b49Bmmm+8eZ%M%$a! +R!UCaA1ii!+Pl91XZeh%)$KEjSK!ACQ$kRB-3UZ-)#%8+c(8R#kHkFJN"STH3!&k +A%!i&drr+mF9i!%NeY[%THYb6KJq)0j!!j[)6-`EqU0FCi4B&aYBk0bTL1$DTKf[ +`NlHU(P8Z")Ghd("V)M0EQ$%q3M(#CJlL3$LS`QIQ6R)0D$)apc`h@a9mQ[f[L!X +Gai9855dcZki-iRVSIX8-VPUfPdm"Q4Cf45ZZ94Xq`kiiK)SjE-2e62KCBUfK"iZ +059CXNRc'(qP#GQY$ENI!,5-*dSml''KCeef-%'2`Q,&faq5Z!p*N6[31U0N%%Bq +ff6D)lMQcM@[cpp)fii9YKK!d)`Smb4Ch3i39jN1XK&ZM3(lA#6a1,&J&jX#$'94 +F'F0-`3b5&JpDf'5d-)m'%JP,UrQXpR8mqF'eVl[SNE[G!%SY(mQGjE0FafZ-cq! +ea$@mV(`Lpb3l@X8b"ii&"YThmaRmD2J*$JQ'&UK-@F4`9C@8U9`X-)9#!G6Mi3K +H+LAH@&&kB'`8@md4pK0"m[b2$IT`+a@K1'rHc8@%21'c!%(`idiM+KFZ)mI&eYd +m3T1SU*J@lQNchGaZ@Kk-SJ&jYi4,16k!X"%)84#NK&[RDLfY4rqjbpNEYMabp$G +GeP0JF)GMa)"*CIp46#N2Al3HT%B5)pX*3j!!frZ`(K9T+"r4fBa3*Xfj!2rZJ20 +(+b&4Gqa!X9CSNP#f$!d3ejd[S)Rkr3G2GKQ"aJT8@hId4#m*L`((pHMaEX2QGCb +,'VE@D&&rp*V4jh9r%VfMCbdD2Uq+p!VTUa!HHAY,2(da5Z'X+-V,8C39UCFZ3!d +)r("+dZ0R1C!!FMP6A4Adb*C%L"`aABMV2dLJ'9U,d"!K6!T9-+kpdSq`V&hdq$i +F%D2VP4Q[31VGFV#)pDGCN!!UQB'`*#1[de"#k2S'6,Ma%m&N4*kNa&r14SlJJ2I +!2)#1VRYCNbL+#RkiM$McGFCmKTDS(rRbb#q$K'4e,q3L3L$8MP#+8(!Id#9[jaZ +XYP[AEleBUkJ*h[6b[@Ki!ZeNa2#LB-)2"9%4'(VQZ1)$8SFYY`8%Rj!!3i8$i@# +eGq+KfkF3m[J8d%iP4L`SIV'E8$HXeLR%6LaX+43M+K4q#+r58LTkA36MZ'K#RJi +B9FLi'XTA+M#pIi!Q`he)-kKMSk%U*ilD0"#5eCFEM385eJH'QkdR$DIA`1*Dc!+ +,C--$%@L&DLX0G(d[a9&GdbD)%HjNpkGFp`DkI1Gr4YIk1lr1YTTpGY!RGEE2-K' +!15[m1pX!5AD*9GiUUGjJbVMZhk`EE[DVfZ8U-fmdETk4JBHA`YA$fZBC!L!T"KL +3!+!8T,233MPH02VYcCN*0&08HJ!G*TDRLJia`XfK2DB,iJlZ#1ACac(24fA)E6M +FJUK`-e,IL"Ec$J3C2&j($5CQR(`PM(p3JY!r-Q%Xq&qA`qbIJa#M%20p0l42V1+ +[K+j8FU[E5*ABC#%b9U9eDRIYMmCEpdFcD6`0q%VSPY&[G!@@B)-fb5pR,"3N1EL +5Tkd,6"Fp9lCK+&dFMTBBd[-1,bXlLJh1Bc)$@)pjTaQlQDAd6D'@Y6[#Qkf#-q8 +pSN`5%mm%KV"Y4lSlISc#Q4'LC`[E+2QGXQ@dXG($jhdPJ@#qiQXCEdKDQDm%LB* +YrSMMF@jZal5fRH2HGSir""abH)JIUIA"J+4'A`N,*',U#N'G3DCd&C!!,@B06V, +J85q*DTVf$e$!JjLT4'I*SBFA"0ca&"kE&8mI3N)KbPJkfkT+E5mPr[pjkGd8r*L +hSaNq0YSf+2XMQNUh#85@H0VIj0iJrc-"*N5LH%I`Eh@+NJAr@-I)p!0a&DNrBdN +UDhYrRmrd3F4%q%aZQUjI4B)0JM3K8"S)ddU0F"E`Xb3N,ZVkcIr([`iT3[3bi&6 +K9*bpjDZcPRC"YN&a(D%A-5a1!B4#q0AqPIJdP9Fl68JTa-JNRVX-)iBP4f%R[r1 +VI1&AqF5[iMrJU&rP!&#C(S60*JrciYSHcj%8S"JPPT*9h0R,$K9cpU(lI4D2fX` +BUAN0mr&[8)ccEk8#*Y,!p3-T'i6f#K@m*HC-mR5i&ZLG$Pp&*4qZ!RUhB&[b15b +)(f0ip6d(lYCjbM`+KP5)LN)qY!IrL-L'+aPPcr)L3X+aF+i2`5U4m5Y-$"2PEEl +R-3KYaBSdA9&3r#mM)`2#E"Ak4cAlJDa85,k9X1rP,HbcP9jVX"[80FX)!KAbdCr +2cRcd`Z9[frpmXHHLiprrpq8rRYIEFr&$#L*m1IhFNE['rm'a9NI1K1YrrJpAp(q +R2k1rd$hqp!XeiqmmrR6V``FIIZ,i!`mmX22iq$mYrEZ$hHpFkeVklZIkqmppH*m +HIfkh[Z+j$hA6KBZ,I[l1Mpr9rdPriG3hYKr8Klldfi2k2laliF@Pc3!!2D&"4%0 +5!`"TA""9$A4'%3!aihj&IpqfI"R,'NBBFFBdqCacAI1mbk5D8Sc*XS3`4Jj*4k3 +4FhAP`*CL%RBM0bIPPdZh2#qJ8Jp&DQf[YaFj(K[3T#(f8%l+i84-P5,e4QXa8'U +T"bR'L0a)-D8Khr[[lr[f[)RBicfrjcmET#FTbS8J#*j!0[8hH&$"1R2qM5k$!ZM +,(d)4lqh2'I)IERbb2HM)J+$8hfhcL[jr$1"6&Ae!f-i9*eIm)'i9MrHr,QD+a`9 +9Mk6'mMPEBBVT)(A0e(BPpIPBd2&Upr6kL'LFY@P%+``d[RdZLibI#%`CcK@23`% +Q!--U-J@-BhL)j$jLrB,&EGNCD@*iAbEBcM&RP5AHh-&9QdJU[LFqjK(R04KX1X9 +YA"D6&RpX'a#%kZ&U`0cdKdTKQQdjG4*hC[$39CXrH0`6r0PbLmETYb63A9)FjT' +fE6ab-K)mEQkkTG+DD8jEkbUq#br(R1M@N[bdfh'1biFE[eBKcYU4K@bIP1e$GJh +,pYPa,$a%l&9iPDkU8&bQm`JDV"ci@&ReDAFLEAiP&,b0AkZ2cd+K'VErcIihkA@ +p@5&f'"0*e5N-9LR1@V`d(03eIITA01!m[*SipY(S)*J32,U,UjT0A2eK4",8dRV +PQCM1M30Y'GELYJbRPXa9Y!e1"eiAQdA'1cG"MGcf)f4f)L(9$$[DXN8[J+,+X,# +1bKLh0lCPHp)cdSMJdT*0f+[dT$%FdE3d6f(+!8Hk$!5a,!HG(Q#G0N9h+UJaHI[ +3D%k%Ha[qACbp5GYfL@9@&FLmjXba!"e""HH('L%+')I#ql#Y%SJQ6McNqqfdbB' +f(d&XZHE%!5bqSB'f!cK#Chmh(3LCfCE6"3#[mcm1$P(EEFC!f@$bRb&#pAHMqAB +l$N,+A8-#J*k4U6K9'5T1,HGR+RYjp&C)mB[%jF-"8F@4SMK*UYHXdeEM)a(jm&H +K`REL2m((H4!mbK*ZGhCmdfQl,B0lM(JmEZ[!Bab2)cB4Mj0ir'GE1akVm(MBPX5 +M&irGYNJ'N!"Mp-&-`*)!JS"bSaU%1Q,Tb0$%LpZ1")p$qGB$Y+B4UpTH1"Q*1hI +9KYF+QECU!X6irf4)`Q[UD**-KJcT!pddX8irBTfZcY#!r%HN,J0rAm[pYN6c1Gj +NmkhIaVdfIpcT58B0m)aBET&0Jd`@8'B6Qbqmr"B%#1l(VBTl[`LQRcG02F`6%(I +DMD0mZlMQqr18911DG"iDjZeMSecjT&Id@eflR[5f5dIafFHP)CG'ScYcGGi"X6K +*jcE9CfNIkP"p3m14#iFEErA%H9HhaIp%MqV$bbEfXZP4,j[`XSUpV(V8bbUa3`# +-"%mbm,#0ac[8-aE080M31#BdlPA2Q)kS&+%"8cpa(a"*%4kD8$R$k(JeZjfM5Ub +bb8kmX(K4A4Fj+Mfb1+SS&EFD6!i!2DV35EQ0c6PbH4mpc-5i&NZf80r)6dCH+0f +5(UmihrU52E%[fjN0m6)F1,r$CDZ146ENL2jp18K16H,mrTIX0i42@kNjA1B5)fM +1AY&8iG0@'M-B2BUL53Y`56M5`kma&GZej$#IjC'ZEUM6rq$Ki3j#I*6mlNQ"lRZ +#EK`QMJ63r$d`lQ2*)cfeK&BTbqTDU2-1mb`HY(Mj0ZK3Z#UhAdf'Z@LT`XeS5H, +fQ%A'l9RE"*TSp8d-f634X+6+CP*,Akh-Y)@mBCjPUf)C`ea&PNaCE!L41V#$f,3 +33+BL(BM-[k%V42bfchL!4"5K@eI"aL@N0!YjT)BPTSCD0$31mb!CB3iTK"$1Aa0 +HLAL9Z&USK9'bR6+iLf9iN!!KQlAZEDVX[BUMb@B[IB!NUY$B,1ScK-B*eTK)TH, +66jp2I-D[UclFaY3Qh&DV9EL0U1fiGDRMF+@3!08XS0Jr)f0D2B0E[hSB0ipU[HF +c5$+RF1Y94h'cUG1iR95eZ$R9-66U9*IJ&PGeZ(@Sep&CQNV'mP'fE1F+3e!cEe2 +Yl2-cKpDZeArQ3p&Xq#M@2qTqkR#I8ahXBiJH2Cb[C!HMJHaXS%leZR!!DEJa#!C +aKpC4HBq@(6#QDT(9)@ACN6@SpKkPVA5#q%CB$T@M@R82ZZU,H#aD2-a&6Y,')VQ +*Ua'Z($UUMH5ccV-XiicXAN`[MK4lj+-T2")TaQGZj$1cZ5,R#@fN4##BaD%RQ8d +p3`XLG+@HNVUDP"D&1[Y-I9rS6(dIRpp32kA1+VC&6MkK9HHHk!dASTZ5F!CZJA! +k'Ihd#1,2NJ"HPF*KP[kY[99CVKZJLPP)C+N"*2KaHq*Q*%"Ppp3#jFi9S6�,) +al1&CUjbAE"UK%[p6TBiUF0Pm!5mf3qK09GBLZITU@RN6"1JGE2,qeGc'Xkj"J+i +&H'm3ZKhBSb`J0DE-PG+Eb@#pQ!4Z('9,$)+fk)HBAYU@HGBRKQrN3&JU69&CCj( +9*&S[80k%Bm1#q3rc!"*8)1Epk(9-Em1`E'J-9IT*Up,Qh)@"Qp$dcH3,riJrLh` +!+%01G3lc0)Yhp@J&R&lN"3a-r""00IK*i#H*(hTp+ejAS2*YYpL"$0Z4*)f8*$9 +hdUHj!NGF1X3G!!N)kX0F,UbSF!paXa(XP`mr66!,-+5VU8I5$Gcm'4MeApTaFp# +2SE0Xq[ark1a0["E"R[k51QA(r"11f5&-Jj*NDBR-c2qreEc0r3#,0#$'clKAPA' +6J4jaia%!QBmPh#Ce(,FUPUcE@E)H4l)Z8AB`i*RJIN-&*!JQ81M1Xi`1!+#8"V2 +5pMB2f(`'G1J*B@)$5rKaP[!l'"MVe&0GPqFZQjYUA*qi22Pi%@#[iq`e+V1MP,$ +kF4Y32ch+*Z!fT,lrRA0U[r)h5cXYX,QTiSUSlDP929JXRI+hK6SmG+MpK8d9lVK +f$5RX&pDmrXRVb3l`AUG18+,`UkHF!'eEh#RE!NBiG$NUfc+,3`4N"N#bFApT$'! +%F&PUK&X$SHA5P9$!,1r[YM44PZJ94k#F@Ej30iE204r5)+cE!,UGJ0(@G6T[PbX +-A5,"KT&J#meU),N$B[(4199Nl+eip'@[LXm!q`c3TbFKM[4G[UF,6B5(3(r1TjQ +Lr`D@(SNjk$bR"La334Xl9,&LQaT%CSap"X!`)[0Z9h`+TV#re,MAI2L*QlfD3+* +T$[J[YLSlm'TMLqXX!FY59*K&B$Nh!P5Dml9iE,l4UQb-Dd(#2p2feR`SPYpl6Te +Jfa5ac8PRCNQH6BBh'6C*Leq*aCH5EQQLDRiP%Nrl2R+C@X&ZTA5,f$dmFJ-EKL" +6LDSNb83DQaH6F#4)RP,94BZ9c!4CVTmHcc1S`c!SL*A%S4Gm"C1"#TBUT4+*Nq* +)6l@LL1'&ZRfAib21UiBN(NjL1r0XikakJl(9NK!ULF,Vc2'Pe#1EJr4!D'-Y5d* +3Z#ceb!I@i(!9Ba!EN!"X)dLF%5J@PP+b6HaGLdqUN!!056$5N!#KQSZJ*X!J%(j +#8X*"e@b4h$NJhQ#R4h[83B#d(m#X)dFEqNH'"KR6KJafA!kS-"`B6Q0)-X')"lF +BUf3')lQ8@#,R+,&%2U0U+C+2fl14i[D1b$N,#EVAHfSMKGJU#%)*)j*rJUY*5KU +4I,$,N3GE$VkGPS%"pb3YJYP2a$%YKEU4PX,MBbq@dNX3[MCmcHaIU-2dE3rDm3h +@XDM[@-c6X8hU@-c6XBL1VBrU9QEGVQDG0ZNlEFV6DCA8DG1M1f@)2H4%0aB5P0[ +CiLB20cHYP*4EpII#`BNY"KK"92%"S)5)f"%ZV,K#&6E%pX1@5E%M8Q+SFMe0d8h +818)KFA)a"@MEFQ%V9@dDS+e1jMU$+SBqjPF5F!#a[KILU+L@8eAX1+I+%!'Ac`" +Y$CAMm6d)lNj(CC`6m#fi5&hKN!$Y0XekRI+HTHNSQULG9'8R)!T6!Z,+@CQ-Peb +"LRFja0mX5KC(Hm#mBJ#`[cTP1ETb`2%-l+r01j5&cpAph8,9,&A(*FTD+3Rf'Y1 +LP(GhN[+!Q0'#iJ&8"SZSkJDa5Lcp90&2!3#"6UQ#lBJ8@jSNe&$e+X4q6cXK$$1 +(N!"d$JY%$KqPp#%-EL!V%RST+8U%*F8JFb$lR1@-d,hU-A5[[[pJhD[pTZl9IN2 +hkKc3U$9[p`@fhk[II0LNA&$X*$K"8FAF+XKK#1CNM8l(3aN+9#kaSE3Crj!!I,M +jIeA&(@)j&XPRd4$,fA-h-Cb"'Q)iVm2!$68M$`IKGYSd[c+ZaE(Tq,k[%m+-!jR +XKL1aR!&4*E)CDZl#+F&SFX"XaR'2X!0H%p-U,Z(c#PkHBU5"6XZXrU`5bl##J!J +r1c,8T!j#a`d`06TZa)2NTJ980)QXak4AcaCi"56Pc)6)EkkS)p$%)(I5"bP0m91 +0M(I&cVB'IZD%(i1mLk9SFG!2X6Bik04fJEdThaE0b1!"*YMb6d#5d&$DN!"2b#J +G(q1-UG&)`Qebb%IUj@8[Mr'jlNFPHDlHD3FE$H6elTFrr1YHG2)T%Qi35T)X)Mb +%dGJB4i,pP#818TT-JKfTP5TLcYHK'KAa820Upi`IdrX10jDf'@H&DK8EZiaNFCR +8Rh%(+D2'C[ZkE9SNQ-YR9p-8U*p8J%k`iK)Tp8T,aQCY!DQVbd0ANI@AX9P$3h4 +&hCG!(GYMXpf-kPZa@jl$8$V&(Me8l)F0&6[Q8*S((3TEarCF@*BZr)cJai'IAUK ++M1*a8Yd1l&1kS)JXai4V8%)kS"TX&dIBUcjP"+q5dUYH4PJG25JMq((JTi[)215 +E*98#!r)&p3c%BkKiMkrS)$8M1ZYJC0F`mrlVq"!Y)Ab)iQ98fq@XkH05dmG"'K' +*C[*`m`-[8h)"'[B*#BLKZGY)68'*ci"i"(8B'3e`2!fT+ZPRU)1I0#JVi1hB"k5 +TC5a-(`-ZdCDN9j5e`0V9(DhJBLS'3Q43JC&k!iK%,r`M+F*NS3jQQ(',CaLTJqS +c6NkU5SEi[B)!ZXJ93d8[qNdUQJ5hM&#'#PG1ffU'p!XLHX9`G1U#bc-FDX3X,#h +F1(f,(*@,A,4aMeGi(6@!&k*%9E63eqqqflA),BPFK%#QmA-B2aj2SC4iFU3MR6B +(&lPS%`pIC*Z`XJTYK#(QFb4%,h*jT[0-d[9RHMVbC)kE4669j-RfQjX@ZF4`Y!U +@&%2A4p8aFAl`"caK92G0-@9D5(Ld,AhFcK-&e8KBJU6(Ehh*HN@chq)0*5cqArS +Y+a-*KkXUiR"Ie"V9Q%NjP@DD"!5F%#EZUl-N3jLX`H6e%8XeQlcI-,R$S&KD5-k +d'FUVh42VIFq&CZ%4$SG[S+k&V2!"h)PB0E!&MmmJHiICZp#cQPZm-fR2rX6Rm9` +(`P5"eU&1JlL!kJj,Yl$KTPRrrTriRN1LM-T'8[%eM)r0#Lm*P!dZYmSQ!r[08,A +!J*I4G#ME5T3b3Nc6C!a!YSHR0HYI9H,9YQNSjp0H+eK9FapF16"Ja6C1P9dU-GC +qcN6D9$(-@1P@T4,-Y%kT[*&*e5'1@AUiHAH%f*fBJm3#!%C58-02cf,BAJJ!bj8 +&3Z8i$I5EGMejBGrm[XG3e9b-Maa3NfmAMRclrh!IASAd,'F6+H+HB%`Qa&3rUIr +9$[cSm(-G!&FP'B%5RR&c1`S%H0NYk8PL8X,`b85c+SRPpK-k5'-'4bUJiHZ+I`c +hlJZMXq6#6mXR--C&m6%Z,'Db4e(!`(&eJc""r(MRKlE)!EMSEIf)h0VhR6KSSB) +@V+0I'-R8m4V3$bT1!h+-cCip+1kl*aH*EP,Fpd3ALMRNBM-KXfmpf#KNjA)IRc! +ReV[b9i1eR*48m[,T3Ee+2SMr*[bhJiPZJNSb`LFpp*!!KJGCb,$r$FJ+k'pl#'V ++bEPZ6mKq$NUAFj`Hf['M`FmN6!S6F&hrY`GrMBF!c%pmUKC)'k5SY3f0r[2a%cm +50NPE42A5J5h'$4X8Cc&N30`(`6")+)8(&ZTS%0j"'NMl1C8+LicD#rrVk`8)&83 +R)UF#8kUTUa'!'[id8*(&U"0-Mq-Rb%MpMB-p"ESJ00q,,X6S,M!e5&0TbLX(Ij4 +IB%Sl93`&'XHTX620iXH#rRP'h[S4a+52iL03"Cd%Z#3FaCqR%XKmYFDTr6T8&L& +q)*(L*r$a6"V6V,[D[m3j+AU,5CRlal15i$12`cMSTD)J3%meq1#4ANIaMJ5B2Jd +k1qA8GR8$m)e,K[PT-)1Rim2m1E`mM5&2dR#46I4TIPP3id$SAJ#PqFQ1-,)bSFB +j5Dj@P$J0DTc)lQQURJ)3DMD[ae5,GjUaNHUGqU4N"6ZhMb@Q2TDBjMJTB2Z45%j +5)RQSi,#phl!NY,"5FVa154,XjEl#4+8EDVh6+-k5R(TJaf&(&b8LqJ("iDa[#p% +V%(9"`4H@C+5$2me98Zei*X54VXZQC#+S-*!!G%Ek+A[#h(6[0TjN`iPJCNFP&8G +3HSLM#&qbh`@'5FHUYb"%FadqVl221+[XJP6CrGV3$5QXGG,d'0`M)#U0M"SC'2C +PhK)pQ2F@G)DIkdaTZXp#kZ4*!RiB[H5M,aZ$eKiBqT%!b+c@PP0F(IGE-adI(,Z +6CQ5IP+G*L4*rBTH%TLB*66($,e9,j)c)&PJPjpMfD'CVhHEqEJ'45f*EQ55f3F8 +$8bh-hXC,8'hpeL6`T*ia#$`CQjNid!I%kF"2lpI*L$k0lT!!'"dPU@HS`S#3!$M +)MJ(KL!P%JQ#84)06dB,4Nk1#B&63e1Ii9C+FE9KKLji(GXb4Nq`5MCLfV`iQ'Kd +FHj&3%U&!C+FliQE&2TiGjil2aFJkPe!-j%8iZ`[0EAF[b4Rj5F)S9A9PU1U-C1b +$+@Im#mY6Z$2(4JCZVMkPVpEHT3fXRN@a1M++[iZAEi!X94E[HT!!q&qjDYEjihj +ap1`VSSML5FZIE`aFB3EVDqC%*C%i44c0+#l`FYUXXPGMiQMKYiZMA`80KIa3&5k +rF80f+3S(4NV@S9VRCqAQc2a)2'dS,$K"8'@iHPEdpF(!jYaPL6b9+IT`I(@Y+hq +cmbe5L%l#6F,QM'FCTT!!di6&Cc"Q&jb#4a&0XdbG%fUf5*AZDP5kr"1RE'PLl&% +C`'5LiCqBUm326%VcU!SrGF!+eBB4UUV5pCNRr@"B6BU2mD(b)8%8@B#U8I`)D!Q +G,#Bd#*@i(iX`Vm"3SM68iepBlNPJXTq-Kf$%GV2LM$"U(VXj9-"J!5fD!S$pVJ$ +BT$*)eNH"!A2h!HY-$Pd*X-a9Iphlj3mTi@(4la*F&-Naq)"kZ2NR(S!GUQaR6dN +)l1JPS1-iA#HDIpiAf"1idYm0P0p1JLqQlM8S8p+r0`mZU*la['i#)Cl`8a10b`L +A6BJlmd4[KBX+FiMHqmRYTSb+r8(B+804`"iUT)R+4@![B-bB"9[jmqI'+FRiR'N +`Q[TY9+#cR0J+CGAKjXdliP#L8)CKd3'q"m3ND`$RrXd,Bp3J@D$"+A69MZlVKmT +4%!#1"8mQb-'BP'HX5')U&9%ENXPG4$V)CZDUA#d90+fRk["Vkm'SE3#+f3#R&Kb +,hjN1"a$&$IFJlAHXbVd(1-6('UQ$'JLQLjNUk9iJ*dj1&ZY"F'B)&JqSk5$ef4! +F-'[%cS44bpZUL2c@YkbpkhZ+Uc&)$80M+1#kZ4dUSc5,*jd(Mk2`hZ+c4QH9,@L +%FTd+JPedL5SU(K@#4@5K6T2++r(MX[Edp8*%4hGVHdXUX*cpaTkBPbURhqA3JST +lJPdXi@M&i`'R5'V%-BCF5F"[KfQ43##SRp49B**2l*3Q3A%"eY*,+VcIQ@P4m)' +UqAFRiAE4r22DD&B5C!4!3S@61-)*$&QP@i3NJN*bQcG3`9-)j8A1hT**N!#'8"' +2p"%!EVN,E%H9")*f3TEYLINIL'%*#(hQle9Q%S[RQFJ,KT40M@J5R%4liejbL1d +)hrpG12"9ifFlf2FL5iJjr@$48'!2$1'@$CKB4-"()'EX*3*Xk6S'b+depSU-(3S +FAkM,`1)iHmp1MrSGliS3YPH((EpTGZA(`Ba@fX3N%r*X)5`8QF998Ej4Y`p'FI[ +i[PjV$eZSR[8p*6Y-3,cQQ@-!F5p-J%QK@-ZDM@3#T)bS"X&fE'(q"jDaC%N@LJ& +CG!a`Nc1%@U"QH0+hQK*9NkdGT&BB@6BTVTY6U$&F"9F41D!Hb,40jThSe,+*R1G +iV)aS)bc4V#,b$*9(*CTe8&MS@!'*$8)R5$4Y(E-@'$4XR@c*$31lp31R`0ec-9[ +bdjKFIlLjjLPKbF()#J$RK%()58k(!,PT"UBq"UBh@0&0QKUMjD@PURNYcq3N@b) +RU@)pNA3#DkCiVGP"j"9!YfDY#A4VYK(SrXjSp%F,"A#@BiA0$R"8TYXL&k6UG*b +fEImE9I(2f*F`Y4U-YAkmi[&cN3X!Q#BXI4V[1mQbH5fb1UJje2hS"XcI1*a*ZTj +`4#i)blKN9ZL!9aj38p5K$ZCXNKiRp8&*[)0l2,N'4BCH$421+fc89L`4P$#G*+D +J`6R@6Ep`3*Z4*N$pd3IP6#&8#,TP(X(8#'%EV'V4aSV@C@mZFMPlEI,DE9!i[S& +(%8205FIa3"#HFkC"J!d*@d(#E%*9j4-ad)V(lGJB%5mCjI3f`DUKJS`NMQY(Yle +$[SDEQ&!PIC+i5``m-C4J$l00l#49rH0kKR*qpe3ZNV[,`,BXQ39aGFPH4@Z*26m +HFjM##Ma)mj%90f&V'L`m+YqY&`QphqULT@$)9XrSQ0chP!X'-)MHbZSIYT9`e&E +@SQTB!6Ilefiqaqd++@VE"XlaAU8-!X3&mrQ&RS*E$E'Y5JAQ#f`!'jdNPdC5Q8* +Xd,mF'[LmGZ[E$*3eH#%XPhQ5&KEXr0C'J9%(QbA6jMbdaEm@2&68JA`,260TY2e +N!HG&TJLNCDp`DT'ib-M@'4mSQiX0P(Q'V@9c`c#qP(N%S35SSjPIGfVR!#V$2AM +C@qC"#)lLXMQBmQic4m"mqr!L(br-j#DK9rH[(!T6&e*6Re!XJ36mrA-3'9E#MC1 +-B+Q'cJi4ZUQR(c4C$HA,+TJ68`(XNqb!%diJ!%[lF((CbE+$Z1@@T3qMQl+6'$c +A90`EbBN+U(R*R!N%TIRlhjj-YS@BLPlHqGX6UmaUl'165T3)B6VN)4ZB"T!!*E& +*(#JlZI-LEVNlYh&"9B`AKcUC1T54*2%4(8f[$UePRG%Q+Hc!hD5XBFT*9FL+F1Q +K'3qe`NHBM$qe9)h!"FZ&+9MmKESCZ***h9#4+p%d""@8*B8GQ!'0e13FZB`,M!V +,q,-d6&r8-+jd&&AGKD(3hEJRNDKUqj+4%h-rMi58(XDk%`0AGf*$e1$"K(qZfe3 +J9R$9#i&G!c"NNaX"Ci@+5AAjr!5*lN$ZK,#GH1PR$JEqU9+S-Kf%YS8*#h@1G$p +F2ZY$T,!'f#AJCZFMC$ej*HiJT$Cm[1d+412C!Ul41LT8aXRPp-VKjZpB$5pJHVX +#45)Y$AXekCNMCp3V"4FAk$@AKJaHS8HJq+V$M8UpD(dXaE,VF@LCkI(T(lrp%J4 +e2(l8[,N)E"`H%pIl-VJ'KdUBf$`"H&Qa'Qr"B8M)TklV43,5rZkcP,M`L86Xe#m +J8eX5D%*m6ik#)1DCH&r(e9MDlX[cX2a'q9FN8'qUU'YfrD[I#[F6X3p9jDClE`L ++&8Z'Z-GkbHLhpJEkVYlJS@3[epT1(H$TI-m#T6,B4`8G31MV5mE*`3ZQp1Y,EMS +BZRpVYSYPhr(6+bih&3'"irhe8#M(&FrZIpfkUlmAi6i5*bT*25Vf3He#l(Gp1T! +!MD61H5Y+m&YVB%4%kd#AXJ!hU#aJ+*`4VB1*h@rXG5%ib*,mT&&'@)mP*-jkI1` +MR6k3!"b+be)S'4@Y!Y*FQX)"rQXKb*&lMbpZa3E)bI",qJem+@S$Ap*[3-B'[N3 +EJ*USAXcZEeAU8B4PDAmRLP-e+8Y2V-9@eST@D5Xk-U14D0V9(D-K)2+)Yiek"EB +EhB&GZ--9kSp9LEfLFG5llSV`+S@2U[YGZCpf9)Qlk)9Gkp!+Vj!!I8TA*HkKE&- +B"f5rMf-8p@-S(-5[&*fi%88iZ1JI#T%c*N5Dj%&%-SP"$AUecG([i+XMePf1hp" +RIhmr(ihdG8,Xa'GZIbkIMTcCihL22Y2liHm8kBFV(3+*)'0HrcaNR0)bpLm9`B, +ie6C[I`LCFd*QIA6QFd,Q+P0QPcd*%d)a9c,XciT!fD'988!DSQ-5N!$V%R%%MZL +)JI&%8"8ah1QU["B)lkM,GJemAkQqqbZbqjCclk3riaDcdZrBhK$,H[Vb&9F0h'l +3X#lJhj'*KYm!-HV[hXVpXR[lHcmlXpNYbS@DTaS#mX%N,@emkTBbX4`6-J2P1h, +B"+p5KJPHf4d8cErEiKE68Jj90`bQ(GarIqYPeqEA44R0Fp$m'QZH9#V32#Ql2rq +l1aFXFS[K!llDKSl``IEl'ppbEB'CYp-9++pd"p+N#3PP-bBNC2HI8JlpSXBYqM2 +Zf0d3pcrpqMAASVS#@d6i,'8l'QYNpjj,lhEFmVPBIN5cS%&AMU2riJhA-jPL&YY +SPV64%!SLEH8KfGeJl,c+0RU)EA5rY0(hp"Zpa#C-+T@B-#QlPh9q3@8EpE'0YNG +Yp**qSk+b&me&fId0edFeY&&'mM!Mq68L1GZQAfSH9'V32#LlAqqpp4Hd3)cS@3, +4iFk8ZNB+,F!fM!H*q$&P!bE'C,HL[,q6EIN3fr*qYQ@DP-A)Rl8$(fc+S,)58`C +PpdYcYfbNEE-&N!#P"EK%#e"*S4R5T'dEP8fBB*6GRphB(cMQ!Pc5,m"YbM`d[Jd +NqZKr[r"VkFKX+hJ30K1E@[0",0N*0fNX49*DLLA+ACLi4(DrpU1H0pMf$l(Y'jC +LVkkmmj+B4BX461l)CT0'PA@B0#Uljrr5qpJaPU-Ffdi5H9'dU&jf,jeiiM4EKTY +S'4i@PN&Q#jE$'Uf5hCAD&l9V2KH6KEGMq16"mc4mB1VAC4))RjHk@bQlimqGqMi +MGa8MGa-MpdYX@H%)MU2QZ0cN2##llP[lhVE0,T!!1FR)V*()I*i4lM`4$PeZPpf +,KK,rJj(h*L,[``*j"B!0de+Jf3EC(HR9l2[ejq*jGX6c`K'*T'cC-V&KSF0eXV[ +QqGeZ4XSU4XSQD60lDFR)H8`mAjR*$VPCG[hUeeqGYm8&%LBC#6@-K#q*5@NlbFT +VV'Q0l(VXTcrH63*%!6+HCd"jAL,NAE,lJbpQ,FT,5)BiSP!"QPE)lP9rq1BPfK! +Mj(Q*N!#[#mNMLT!!HfAAVP1D"ij"b()Td3NERbHlYrl,I@Rr#5(,C(IUdrp@6`[ +)MPLZAfS$)3d,8bQl,@FMDiL3!#P9)!i48L"1@#+1,*&aNqckEXI)@d6'p#5)3f4 +m8dMUIiHQ1ph#-LZ,rfKR5'q5N!$HIGr&*R,%Y,ph"@6@C+rX[[5rPlVC%KpP5e` +Z%HmhB[R[A3%rD`B!,2lrh`j3iU9U6LFlpYMh--*P"FTIG!A5@$-Xa,,lPb3C-Fi +6-3lHI[rE)-FP-I`2)#pVK)6acXEDANSqkC0dl2ZN#Z&RVN!@Dl*CGKprjVp[CF3 +kbSK9VNm@jh(`-'X'3LhprA%2%BU10*MPk,4h-N,*JI-['Ji1!0li$j[-M!$R'G+ +rhB$dp86#%XEqlj&hfE%RkGMh5BMQp`BL9F[ZfZHrYCL"c9%'0Z8'p2ic`qB"@RF +pED`cN!!S)$ZQl&2Xf1q*jrr"F'`NHIq9lk3aj('HJIlYd[)+aaC)8#1lepa9m8H +'2)K)iIXZjeRB6E*lpqrqHMp,ENGCFLXh9CAka8@LR&fB8Nm(CmYf2Xqb#83#F*D +pHHB%3mcR'DMIEJ*e9jed+""Ke3m#[Ba-id5Q"r5!lXU8L)"&kHP3[Xb@VTdYR5m +DA355f8M),c)eY1akqm,MIhX'#Dj`2p[!S3,SiMbD*PR6lE)VpB89If6)STb4l+J +*@ELZQ3Kbi[e22f!N'bH52D"(&+iFL4aBSRp+lVh)d%3l3a1qD$34+-HJIMES"TJ +XRPlehhjGL3AIcaEmN!!*6EJZQ8#j,ZGrh-X)9mi)Gr3BK%-#1pY`T2Z(%Ji,965 +iHeeH`KR3!b1(3,K9XZ[Ie"i0%5jP2d-2KdcS38m1J24KlrlR@5)VCkMKU)3DSJQ +#K(EV[L2C,('-8q*i3%!1-MZq2Z(rhHV5H`L%-YTar2-ifYYX!rkS$3#%1QkjqrG +%#NB`@5*B*KdI"!XE`2VKDlrq#T'#,D9I@XT,[l[am`EZrdN$ppl5`*-30!dLFD@ +"PFMJjN-3pUZfZhHiM'&V$jL#bXIFITiB,ca8kAl-G4ZhpL4l)+c@T2-$+&m#m9S +PPcG5QKFHZZLkflhVJE*0ZdSR83a2H*cMiY809`S2MING(acmjPfCC@lU0'JFj2H +rPH-+CTX2TC4[cYcV%ShjI-19B(JZZmaYH2h6YqSZQJrT`QFZhBN'+@K`d%GG'"S +il(Bl03Q%Zh$Jf&6!1-Nh["3-@l2,A&)MYcRddfeeIcE2&"ikH*iQ"klHpe*ffb$ +Ii3Uk#`m&`hdB-1!)2*[2$5pqqP,Q464[BXd4VGA`JK!0[3U'6p'NCrIUAf'3!+f +C&r[U`-,eJK'%+&qd2BVKB%S8J9hPii*#4C8P03%qq*9S4b1*3Ep$BST39%KdQ6* +BBD%ETJ`8&iVkG(pNqRK)%rG,%frN2B+ihm41*5V&r5D@Lci0M"NqlM"P2k3*dT! +!#CG*N6&,+K3BDXXfaDqQU)(``GN0@hGF'`a[[REC(804PJ0U`)qXZJlrPVUhh%G +JQYeq"8PYNT+DH-I1(20-CFl8!aq1aSe*ETi*q0HpY--epF"[4kqe6I+!hclPQ++ +-pk5-Jb&dKScIX)aB@Z#1&h1SJlh)L1jJHCi1jNNC`[4hKHRbB&U(rfGeeMh*2Bb +"XiPT6ed*T"fFC3M[Fe('Tm`qh#-rmCTFrj*$j86U2GKdl2MmDTK5MZrFHe+1VrR +ChK1,iap(UF3HT'RJG`@E+ZN82M!Q"E)$B+9$09)jN!#L2Vl,SY32T,cdpSqICUS +p"R+T63LZ8(plLI)eVZ+fQ%G`qbS2ijE+rEJYifQi&A%C0i9RCC!!JlE2%`XHKkY +"-Z&(BE([l4bh6c*Ni-hhKc5f@UK'+53@!T9eG6XeYV[J%&NK(D5T[cXUf'!Y1bS +8,U`ST+6``dCp9&Lre1PNTK5,EjE#*%r$0'@$SU$+(&i,XbJ9E)IM5KHF,#)#)-( +)ZMLTj6SBP$Ti%f@U(#(bT!B+16(bHf"#AV+*4c"3K!ebRAAH1dH',h*,5h810)E +)m$Y%UN9b6%deMUBGfTCVR%f5SAUacHJNXmmi#k3+-T)"dQk"%h6jYPHBJHLLFk# +e"NjDEqh$!c+b-I%Q6,c1*JB0%iG'cGpqj48bkf"b&8fQ&eZ,-DA,,N`PP*UK,,E +im(!'AA$HE0SDe0e[Q[RcJ6Lj`TD5)p(3D0qZIP)[PQjG*X,p3LN9P2Z#Le&mYU$ +l2$Y1Pq!qLf!Mp465Y1$KM$d`2&de(-rdmT86q5I)I3e$,FecH!4(lRQJYDER2TM +IB!bkUDHeKKaM25RB`Lb-UJICX%iFH8("`G$C!R5QfIB+Z33R@qQ)bS,md)13!(Q +3!!"Pkca2-$R!PGDDNqe@N!!-5!bh+4aJIbY!'%TPS4N0#XF"`i)ZCJVBiSfaVGp +PYjMGDZq63-a[(q,6%S!HK#Vj60&5-[i8T6BF*%9R`bX`k[&f$!1(&Yi@2MPZa3- +VZ%8U-ljr%rp(@#(`HAShECiQ#DiJ44LfD+PTf)ERk6D%!m)8Xp8iX,($8GRRQN( +BJSf$MXU[il(K"4b80q43f&!mA)C,KIEHBM4-Kr[%DGE*3R`meJ#$(Jli#P1b(d4 +KIKD#K!@`*KH8kSD$+$!HM(r-+TNS`pE@e`R-',K2Ne&ApC+"89'fTJ3rKTRP&3S +$E##C)3P3*KCN-5QMX4K0E$&'fI5XJY2eNqXP-qA+VGm9-V'8p8-$VCdXm`dm1XQ +9IZYA5(bJBYYiL-"%ZTXGVB-"`')pQ+4cCDSD+)+fYKe(Z%T(#,8U$hZDD1%$)kc +J'BI6RfpV*J`bXb`imLY#Tf6b-BAT,PTP-,Dd$c6H)5`b22f,fdK0(Q-Z5DDL#pP +!$`[TT61Q[Q#aSm'VNQPm6*L#m,NCp)K#!ZNp#iT@3D&H8V5+XKbjkJ@iS`D&C6+ +VAB4URU0ATQjXNh#K5F*Y%L&dN9LRjlUPjM#!4Uic0a8XRbdK1Z(```fEp(6#32@ +F)remJN!%bP[C5BBSM60XS9!RrDC1e!@'6(5@)&"PaJ!!+K8DCp-E5kX0aa@kqpT +kjPSB&lDPAU#Ki6+X3a,`jQRk"X*BQEBk6QBVflb(4TMlNm`"-8&Cqj%)e4I5+H$ +*'#1'+K#$(0Aea!p&%6pT)#UD*"mk54&#rL'502@A$dC5r[*r4P)6+&(!S2X28-C +hF[Pr+4`+m(5"0%0NHP+&L43ZqrkeV-TVY`4CPjM5Fjpk`G4a!6)Pp&Y8SlHB+"! +`*#S!KeJ`!!F#T&af9&TdR`TZbe@HS'4!mk+l-`"6M5&M"NfaX16+iiX5eCC-MbD +h'2H)hZFR%1cN$6)($ief[A,L)"P+Ykk)cmC(N!#JHS*G'HUq2F8T)*LAA*ZfZcc +qa2MmbN&qi0$bDiN`QE[D14b(JRQEG)!"UDclL,HA'CV"56f0(hU`TMA46Ef*Y)m +jCHhENjmc20,fcP5e1S@$0Na94l,am1BM+EbmV@fB`SSVE5h)[SMXY929i9rMSAQ +U1Nf$KieSpXff(G5XA'NV3hB3fI1QUZ86H0Jl9Che'KiUd+bTl5jUGP9T@i6XYFM +H-PAY[482cda9qjEJi5Nfj'jTb1h)GL#lHUUkr#8mV*bU6Ll(`bV@V&jUYMLkN!! +))D`BBaeN9'#YNh"Q'fJl"31d&XMbGX%a`Pkmmbf2&3&(6MPccMVMIUVd&DR59j4 +Kjmir$rIXr!ZD[IC)F9[4cS[faThAB1SED&[Y+0jj!)Da+p34J@a@c+Q&HlAmK`m +qbLaC1c1`mbeNDLM63N&RLJU%TC&%8`TU&T6-S+*G6!3d8(MXhqQ1ZbR-G@#3!)2 +9$rb!JmhpeK5-D2Z$9rrG&B4B[c-l!%-%A"Zc,EkRhZ,CP)BpNDIH3Q%+I`%4@#S +1)c&3ZQ1DqjV)d(FX-aq4-#Y%Ki5C,h'!(q6%E25p6YhB'r`bIL+&2(!mi"C9UqY +a"0J3e6jkm)VU'AT)LQSr254%p43pD%4eMKj#)N+biQ%5JSrBj8kk#Cd8VdqKc[B +MqGl@cb[FGlNLf56@"&iFj0pb$h*VAI-PFYl[ImPk,AQ06EPEF0[K#'F8@QFkp#% +L,$03dF'$Jrj)E0![Sb+-H(6@E+(E$V#i0A@4(2SB0)l`aqV`Ffd3$&,&03T65Zc +`LhH)@IXZ83LT(pMpN4rdqQ@iXkid$!43@+8RCTJKh&aqLPhLi"6F)I'DI4afdU1 +2'JcRFXr19E3B3`1Bh-aA%c+(19raa1,)SZd-aG3QDM`8Bki5ZF2DRDZk++L#3Sp +Lf"3)RPb#id+SpU3RJFBh)%MIJZ*k#Y$Y4h5%MA!RAY[BQTX2"e[UP)+f-*-i+qb +fU,%eAfT'J48Jp(d&(mb&KdcC!fh1`mh,2f&19JPf5,ZT'm'*J),"S0'1LXbZEPB +mE5f+d!PGDSCm3UA&QUbJVVZk#iBk-SJ6'A!C8Xp%EjV#f$#@TPN*#54#U)R692` +*#dD&Uh*Bq"Z43ZJ8R-L#`Vbc5-ZUiNe*eYa'di0`)"qMUNl,E4&Vck1R!S&IcKX +iDN`Sf1NPCaPEKl1iCGU5Q"PSQDCKEUTi40X#0a*Nfj'%"PT&&*dPJ5fVi9[1aKB +(Fi8&)6&"+aDh1!lIJ1JA-BCRF%N)L3a-q15FR0CiFZ[YiQc5pFV"NcB+UM8M*9a +Xjb!QqSh)`03U0Xh($PJqj)ZA#)`J'lk6(8@,LV,UqblE%Q*m@)&a&1HJ"PK#(iS +hC%&3MZA0!VX`d',IHX51,R$iAJZa%H8NZP*PaME3+fc!c'Hej#J5rpJJm-0j!3H +ea#%bqZ#-0m'1339f%+5(qd`G8`#aRFX-de$S5("Seha+&mm`EIk8Ff$R-XYSBQ" +R%99-$YFBYb1,N9D9Q*&8aV*pPa@Z+YjCY28j&+(ek6mr&S4Z!`',lNV-iY!kaUV +Sp+42#"FBS#h502ZhSJSdY$X(@LBXV!0(FFZ%@,bcr[!06j-"N3SCV"X[)`",GQ# +PEX%eH*SKeh$Q01bP#dh3YP[qQ@kYYe#6!X8Adp84S0pH+VD!N!"%a+6,M%Q2Br% +d%Y-k6KFeNY4C1VU`Km#L3B4Vq[GkYFXL"kd3DcB96&V5j5mD@`kIL10)-B3l%bd +*)EY`S-)pV'djl%N+'A-ZqM4F&Q3S$1!Er5SjcQ`Ah#FE21fcYL9Lm5q@iP)M"m3 +ZZ%P%S"6*j6)BIE!D#$p5P"qL)[*i6-e[JPZkV'`I`!5P0N1&i%&Z40XKq-(j0XU +Y53KP4U3Me1+!`S13!+@@a%NN0aG,Y0H*S8E&AB1&f832HGJaL(+mMN3jJF$'m*a +qL+)DJi-I&Fk1#i81UPK4ar%mD)cFJ*LE1TbbU$KRk&%0aS8'6+#&DZ"*RAfJTBq +Ubp+$*1iL1#[#Qe!4G4*2Lh$FHLm3'#T`r!!Y2KNJ&LCYM0$'Rrj#K5iY9JV`&Bf +!R+kZEN0`L(&qdkk@2S-!EhY)hI[aiXN4r+`QdFBf3N@#JFDKiU"LHN1MT`rm5-5 +"YaKR@6$1)d`XH@KG(f&NibU%prTqA#`QR4L%HJm0",CP`M!8%P!%5ah(-(G*`i6 +kZPQad[a(Y+hM`qFL*eX+FI1dP!cjl"EfkV-C,J3%%"l#QG*$RI3L(`mI8V([)8* +iB5VB(9jUeP)@82b%44iq&cl58N+!""INFV$+!2MN$D"P)N15&F+N)hf%3JJ$V40 +Yjb+jPZZXq5"Fi"m06YPSh)ZYhdBG`%93&N"V+)ff6#(lRZaN3-,95GB0[0d%XV! +"Md@-1`9L,%X+a&"2#F43V83-p6!4Jm#-[Ia8f,Ek[N5'E1NK4hTa#KINBU&%F1f +6,jT)%YQ!`Lr4*$R38N*(C3@1IBB&J`0T!6+9R`-$P"DeP-FJ&i,,r3I)aFK%"-% +9J9J5(jH1fPK+46Gp4*!!VkEf%9XIS@4dka)R&paS%AMQ033jf)D#,'ANLQT`3N9 +i"ahBcJXN,KS#Sd5!H*4030AlF(JFSH99L`iZXKfX)-T'5`"$2fi*H(A!R*XXij' +5)JAQYj+Gkf$qSpY'MbaN%TNXYb&"AXH2$SHXCiNkJ-HLQ!2,Z"ir[m3@NQ`,TH3 +mrU5I&HP+3`!Z)9bB"NHFPSlBCcML`$QeAGQ-flLbEV*UrV[Qb#C#mH&0,LMAF'% +Y"2+``T@*A@!,(jhi@0I96CXh1,ZblXFX4-D!TB-fD`[Hh&ZdEU#Rk#NNfGd-(Cd +E'QMTabFkUD)#i`P893D#j`U&95cYk#S,J3qD$##+PlZ0Xe)iK!03,mBN9rNB)4i ++@h+M!@lFA"!$IqX5a%"E&e5$-DD1R-C#fCQUE4#GR8Ea6$!A5S`&%$LZ60-(h1S +%KrbB&%UJ#jZE`qB'cE'&(YEmF4BSEJ`+Ji%Ihf`Ki419m*16q,'5`rZLh3A$P-i +51eH&UQ-5,SF6#"e*!Q5!&BP(5$H,pa%%b@l9S+S[EY9!k$J$KGfcjQ4PMLh*'S' +K4p+02G,6GYQ3!)&L2!LrSBB%CBMkJL"d6(0b)M8%!%-3%5mHR"#V,k2SPdb&rF& +'SlKmL)SCkj8lXe3`6+C3*"irK6YaG%%!('JT0&3R)%-Ab+Map1EYKTV-aU!HbP@ +rm&#lB3R6kpc$P#Uh#FS*9[3ilI5B[ZJa@$$mkqMRNFk@-dM@ih4T+5#3!%0J+4* +ID@`T0(D+ARV`9,%QKNpL@5p(ABjP#e@S)$YG-S-%ckCdRVc+Crr9hlk*cl)L&J` +Bf@2D$%*#((U$!8d9+H(R,e#f`2bLQKTQU($LAEF,lX+SC*)S115(fr$(F1(0C-U +EG@YGCfZY[953!!16YT!!!-"HE-QBq%4,L`-@$Fd3b-VrR4jFVS00!QLYJd)CKI+ +KC*BbV5l+RPVT*HIG%D%6K%$U$Iq+A9KVN!!blY@aSP65`CX@XB2lF!%5+bXQYBi +1E!C5-!(M-V["j%[LKBkFH[08k(%YJZP"6#!hBUMaFJd+-i3-Q#h+TA#9+(D#4k% +D5CY!!XiPdB+UF3NKS`"`$#L%%-JbZi!#Pe9(SlpPU`cS%b+&Pa$IXU8frF@hPMe +-50''iN[,(SjUQ*5#83(kSaVA3LA(80LbbiBKk%K$@5c!Gi3TfA`@Ri$J)458-%5 +54Be!)M-@D0hBl"3f#KGB!BA[+BM##HN[p6)&#IFETl#9[!MGLB0DC(CSQ4Aqh)L +X@U"@(1T4U(929)%!#McB+R3GAU32m),3*mY5"D5f,29B5+hX63QTp6R4e(,BhPT +8"H6D6NLYL%Y)lEU)kB68K-d999('3&H45)KY@DU!f)U#!hZ+X+NL,L!f6(QF,Xl +fTj!!G#`Y31(EUe'"jf9dij`a#+m5'&#KmR#l*fPJj2(T,F$%lbl!a1Fq#"1IDf$ +LG@%6'ppF39XP8Uh+%3i9HI2Bc(ccd[q-Q@qq5f$Qml,3FFl!c&'JF30eKL9i'B* +'SU"`kGa&D)`&+Y95b%!G!HBPaYjIBZbpEYmZE25J%'kCS4DBP"3c!)p#ZU4F4[+ +L*%C9-G6CGb8[5B'"5Tb[@mMj@LCKqLCY5amC1[5!#A"9bQj1!3SX!*a2jJZ%85m +3f1V!cK#3!#(`2-*B,V-VkpUVjRpJMM!@$BbDS3)[[fLU`-Z[#4Ai-B%E!'#4H3R +#F'akF,"qG"+)"[,5jF)4H5Q+fX4[lPhfcX#HCDm4B#,C[S11%0*eS@k@XFR,hJ( +*-L!'0lEd@kC*3*!$QH@V13V3lS*$rrKSf[Fli5V[25YhpDcY,&kmGPHqE1eCZkY +iXG5i`ikT",B8&+aPcY+1!6XaS!-0F2(9C3J#lY-!GCrFYkX!@1B,B#N1Y1BM*&m +q,Ck`D$"kE)TH6S!2&GdU+ELXTBkSCBdaiC'RTNBjJa3aYFaSH$Zl*19)pjiCI0" +P8LhpC%`M`%I5DbaG3S8i'0*L6[0NB#0fGrMMPY15fD`+KM4lY#(0YS"-B0BHIGG +KkYM@N!!R1(F5&j%,#UacB+$PY%bUbm%@edP@A0i)953cM'UBZN'M9hI88p(h8@B +UU!HkV-q&L$)*mH5@iH+fcVBaGV[q5'GE%460#9**fiXE1r$cMVfadBkI6G&9Y`8 ++R[FTN!$Lk+Ydkk@!Jh')#-PLlQql$15hk)MD%4E6RTp!d43["3&lUJk&f[Rhk[0 +V%DcEhM&+(dI)+(-YPYDFH6B5#cZ+'bm-q3e,5Fi)IZ1Z"aS[S)TQ"C)20crGi,5 +@e-qJ+2K+,30&cbFj#+KqQBRDceSQcA"*YIL-!beR(*891Ck)k"pL)HTf[p[96DV +b'AP)#0mbJXlQQ2+m1@fF4!4R*SRrmbZV3*!!VhrHUmlr(%%6i3lLc++3!*%`Kj1 +63#dTjVpAAq`9MZq*G)5&6[b,k2#kY+%drI%(fZaJ&-fIe!Q6D*!!BQp-QNLEhBN +%jIm,*Sl(Hk1f2G!fMBP,2XP")F4QCae02)Y#M`C#J!#T-`10lf!$de*LI)H4)-K +)-!%5e1P*J)"TBKDVE(#BqhISLC!!*@6j1jdj40Lc(R3r(Y9p"`CIalV[c00j3I+ +@Xmjai2YYV(11cXZP,G45dQ'1),aSZ8#QF*Z`lA!$-IAmC54N-)QhVU$Lbr`0*2G +c84@#l#MqfJhmT12(KCmVKaXAHmGQ-HNFFi(*LmaMe)'c"fb6(B!kfDN&NcX*jaD +AVB!#M"R-I-GJ*+qCP$Li8'KMIISM5"kY%e&"!eBD,UY)$MT!5B8P6-fY1Sd3me% +!"H"IFBA%A`#jm*P$BF`T)mlTJLR"emP94DV3E1,!aLD`LIAjF`2&'jZ8e),UFFB +H)DbD4309e"S8bd*PrX#)@5'@PGIN8E62)dGq),[kHbp58@!Di+c-ZUd[d'dp&DN +UrFX53kAUTHC8P3CITdHkj#0YTL22CLKSdbGe(MmpI"NERhTb#EQC*3)S*2C`$MP +UP&5KH1ND"+8#NUeq$@S'aA1GJ8k5K3p!J[fAALaAQ0`((Pd0%l-Z#,HQ`R%ipYM +1"pUZSm"eFGYe!&8R(XBJ#+BcN5R*9(CN2Kkc0VD08DJd8p'JN!!aVp*Y,9XZ1Va +RcNkh-mFNZNmJ$`9JNS*QV6V@F@qp3G1@B*SN0'8JY(-U,K@9DK+@0MD9[-b5M3E +**Y2Q&m-HVj4d-Z2FrMC2IK%P@4'kCa#A`KDreF1$3$)4U32rPh&$FH8B)pQUBj1 +-%FaN+L!c$&60YGHBN6%XQ)5MM)aq1(k*`b"-ibq(HaVA!l&AJP900,j*U!Y$3-R +GhdeJ9VZl,eT*bJadA@pe[8A)33UkRd#c5P``qZ2S#c*3q$!fZ0iJR@Gih4j#-IY ++8U&U6L!d%#lEM6,UiK0d533%!q+$pp!&%8,-"1L5$R1UVc[kJJe3miGXi`bd0)b +m6C+5(8'4eMd&)P%Aikc+Up+6*F&#T'%L61*&TJP&bkN#c'"Xa9!2Rj!!A('U#)K +!B)3LjXPlJ96-LBV'&KX9pj*8fR!Y2Y(a`a%4UqCY#(C8hpmp@pak#m*U5DTk3L2 +X)X&dQGSN)B5aU`Kf@%pNYPm3NQp,iGR#JH+@3UAHFmi!U$0A65!+Y1#GkH&,N!$ +dhj%!GH@a!98!8$428GCJ`N%#h,%'VKd$m"U3!!DafRqS[2H#AS5A%&0a$KQ2'0V +`(4YYX%4IjH`&HN,#hpikdmYA!d%e#3eD#ZqpJ+`PdBjCR!-%QaTIHi3!F4XqI)e +P!-@f+94[*!BE&[V4c4k"Z2cSKQBHl6+ai['S#hZ`3)S`EFKd'5#`Q@piHXR-)cM +9GB4MiC%8,39Lk45GjXk+ZK9")F`!L%YUrj!!ZA2%$qLd5Q`lK@2XA+KMS9HAQ%` +FNZ1&+HaBT`%0$B8K1+m#qNrb$5Zq6kJcNNQALfE"15J)Xm`c+3,(,6JH3-dERH6 +)!#*el5)(XM(1"-,jI5-cC+4E%I`B'kYL*Pa5h1)#2k8(k(,[TK"+21S2!!!aL8& +%3e)$!&JL$e80CNB4%#(MlQ(rEEq@U[6QcehIA%rcq&c996e9@lfJH5Ble)d"Zl* +!Vj[*l#cbjl'e2+6MqQCZ)B4`4I[jC3HF-L1Ldb21KF2%QQ3mccUCabe%VfGK28) +i[B%4`[+X`fM!3*0ZdZem-alVlprIrrGe(5#rZb6[*5mr!"9hAL6c)$)L%L(a!"% +L"PpVP-PB$$qbVeN!+5B(X%N)SYRX3H!NXqKm-bI",%8XPH"lmrkmEm))rVUc)1- +pA,eYPL'2D24)bp"(KYjZD*86pm1&LPMX4ppKaB0JVPf00MpV"2[Er4EICiUN%86 +i'PB-T%ihN!"&B5"H'%MK(!,T!PpkJNQF,kHf)#!Xl@q9T6JL15B1Pj(AVFmkhZJ +Im!m!E(r%(mI2HA9EFac+SM)DP"EI'%bdX[JI!Cq&q8!X'3%VZ"`QA$UCK!QE-0h +p-"Y%eALC0hZ+rp%@i@)C@UA8J!a16ac`88YmM)Z2U%EmkAI01*!!4SZ[jB",@I4 +,b@d!L1[%j4#)bZ050Bh3VcYcb[(P&NGhLQ(2i1aaGGGGmB$fkmk-mN#RrS!fAA, +!CAV%CAbFM+MbT!VDSkfbCd1(VeQG-$4EUfa'-0d-%$P%d(%G3U`kAmDBIpVQm"[ +*BQeU58EpMhLDe9SUrUKYkB*Y3)jEaQd`h#SMe0m&J#$-ba$%q@KjL!6bN!#aFE$ +E#kJa)k"'&LXUd0q"TICX$i-4`qqa`EpMmC3B3C9!bT4eF'RTBNBK#E`8BC`G)Cc +9HE@`I&[hC*!!8aF)[lr0hGe[HF&T,)F5E((Qe4iMfGB1d(LjmXKajC%SPJCfAam +0pRFC)BF&X1l*qb(ed02[UPT"HqckC&*Ci"F,lZdbNJ,@*`1YB32P-,+3!*-Dc0" +ZDfpXppePNd8#85Z+l2UY1p*N@I!C1@QfRD9LbNPlfpP#IMM(`83f-LNa65@Q56' +GA1i#N!!`'F#P1Hb`-QJb"S2pdqZNkQiBq3U#4"Fc-VcLjR3SG6-@mb80+Qa!LfH +4bZS"3rU)XA%2UkBDEdjD$jdY,(QA(l)B5`5X-EbP(E)!1UNl,XpVJ*5XI2&[@p6 +8dP1a1Rr@*8&qZTGe,p5kYBCZ&KC50jShML)+'k+EHE'*P215$-1!!SjZAQKQ*FT +"-F(p,,jdd,$d`1*#VM+p`%3"m3BaYG+dEJHXReALC!46-c'G%00*U4I@ZZH9`UV ++SCLqcHU6bA!A#9immSJLH#P[8b(j@%!qqfKScfqcFDKl16c2aI#U4Ge"PBMke0% +3Ec#,T!Fpm*ji`'hqHJd5)55`(I1mPBD6@bhBG!Z,&iEAEH4cTXI,Pb&Jr04F6SB +&+$LP5GPfPMIQRrH*`Ra)p@Gbd[!NM94E"iYE$3QiN!!,IK)Ald-PZEJR6A4T9Te +KRL+9"-%p$--"Q!4SCI0"90#ECU*9J#82,23,A+8-LRchf85"9rfeLKQGSI)Z&l0 +5U2aK6"5U4kr+m85PhD2,ElA#k('jU8ZZJ03'#m%EQ)UJ'$BT3Uj%p9Y`"+TIb+Y +BA-KrbkS[6kXiT6@qGNLTqQ)k4+dR"KMQZF1+!N8"86,dA*ZKlFkFk20cdK5Upp" +FB2cG2Hd8r$!cG#@$K)-5q&3C5dJ"DGaGr"dHcBp%QcJ!#ereDX`m1CIQiMZ#A&c +qNallYFMEMhJbek,iUEJ@a)p,[A34"I2`aXN3U4@)+rB&E0UHN@V[NDqUEbU[9Kh +jUR+&mXSimY@Ah-UV%'hYDFH*9!G[d4GZ3L$eVc,Q0E5KDTL8&d0KGLjXB4$CR#` +GYc9f6*F@Y$hAM5N!AECYRB8VZ3pM9@-IaLVpADMqM64PmaD%"P1q-lm)%3j[C1' +b-LI!1%IJm3#V9Fq)@R54KDC0"SJXX6K6U1S&hRC"UZr[kr@k1mVVr,jHIfQ6mYT +la'Y!X*XAP*FKBMHHCXBL[I+Q523j#Ul#U$5l@U9pjK-3%19`%N)jNmY"GS56G%6 +i$,!GB'+#d!pmI!L6,,2++GX5Jr5HX'b(9X0,6%$[MD#H`KYdPk"dPU[J-Mj%"lJ +1Q!SG`jMU'jm-6pT"VMq8,3qD2[1Ff%$#@@)&#+F*NlB,dm0LV5L+lTb$b5icjY' +09Q3rP"cqfe#*-&F')66J+fP9#)QCNIi1!)04lP#'489#KDEYq$&rH38U3[X)kIQ +T[`YEPH$26SRV'Nkb1Hm0%YkPcG(e(0J[EBkmJdR9c`mLU39cL*clq8'IRBkedV% +Y4VYEiS82RD`'J'UYFE9h(!'fI8&'XN,&L656k'4@Fla$T#Ji!H3Brpl"qm,8rKF +1mBTAa3'B8fQa4JE'TV@+c'bF61i#M-qRhK2-d&%PpI!N-pD9rr-qLSd94IHX&b' +)BIi%Re1YNR19P3ZKZDGLeHSi2TMmiAjSVM+f6Ph8Lf+fS,@b`BM$Lj1lkd2jVA, +1"JDe1TS2aN,jFYbU1Y%&+p2!m$SAXF9BhX$K"KHdKBJYX8U4&[RrqAq4rm*rd52 +q#bVrDIJ[J2rdJl)@T*!!,-(9KQ8cR+mH`4q#&QS89L6"JX+J06EN2pZV'(,0Rqh +GTb([j03Z'r*rCp(*b+hK&L9*9jI#i9[PG!92IK"Ef2&RHr(!m@%F-aG*Y8YC,UF +0R[aGE-%DXX4L'9QFI+bqV6f%"8lZ#R@p8f`ddJ+)5cXH89em'jCd'e9R8X*-q$B +)pJ5JZA+VUB98UbD9fi"U6EAq)b`Y9VHJ(3qTbH046K2%eXAU+J*JB8)8d&ih"N3 +hP&[Cl*kaXI1)adQGDa9e,KGe,KpeV[28ZD5m$(,A#-Eq(hLEd'hrSrqUFCA#llS +D5ShqRhkTT*YCHH40di*(a51*lZ)9Mcc$UIHAlcE%,U'XT@elE98PZB*-,SGK*+0 +[S-GbBMA-RCd)'aI,""@)5B869j[P'iM(T$V"N`JVINbLX[$jY)#(Nl#Q[9@qb3i +Fd5XKb4#%&@5$%j4m-m`[PL)5ar,K56SmUNBGFI'+PN5+hpbphTHd%c!6afX[+A$ +c*0+ReX'8,j'*-)+je,A8caiTqipI,(&5PbT`a0DrFMi@Ne%9LFH[j$%*Z5-mQIY +34KG4J"X'2&iP(3r`iDX)Dj(-adYQFVDFj"6e9r-b"(E2p((B9hN88li9")5fm`U +c'HFN!XTJl"8QHeP1"rhm)`D09k"3l%DFB)pPF1%%mBRC#UIBPF+6iU3FZhALid% +FrR1IM&E$JHAR)'F'NcH3!$3l#&55Me0PG$G)hFl*i'2A!FcBM#X2+bc#PjQ)6ia +*Z(CZ"2Mr5"a(F&%!mYbqJjMFU8KBfXGLch#"YTdXLT!!%LrM!!Y(rKarAXRD8hQ +%9mc3NY-+1m2X#2jXKJALX&b8$iH8d$Se()SZ,3T",GqpRK`'ee1"Me+"Ab,MJD- +IG6!TGe0hNj%@kR`!)!!dZ,2fiMpZA!*jp'AY[IRLDYX5#(VE$!jQ#2"ip-8r%)0 +khEMb9B6M`hB'j`$NKBdCI0!@'FM)iC!!#6V%Ql8lmX84bli1U4Tb50A33f5*[K( +jI2T'LL0$$UNEFNMG%BHXd6FLEk9[T$Jkj*!!fL'(e!ij4"ff$j*@[-M$p8VM3eJ +NRTP&#bHEpkcGH4d`CSB-%fi[Eb-8F8Ia%e80'*i'!l%10Ch+ChA6BC(CK-JQGUr +h@'H@#R*,qlEVcLXI,-@UKqhiUHc2,eT5Bfc!#+RIKZQ8`)Rd&%bMR0dpm@FerU` +%,,LDder-4-C@JhhEbf%5`*BjU+[9-+UY-1A9Z0Rk%dk5`Ed5i@ipf)GP#*YA'ZL +ZX49lAZSpfF"`S%e0TQk`![2PcdR!I5[8(#Z3!&i19EBcXpBh$R*9aL5XGiSlHpp +9I,Dl8q31@S,0V0L!SkGPjAjPkjF3r"R&HGY*hrZiq)T'IYfVG`Fq(+jm8Ee$8$F +!!lB+aDeh!`9ZL+B'P-k3!"`1VPj#d@R8#4"FIkQC1`'+Z18L*8`h0ifF(Za`k2U +@G"K)T1+j#J#mcTbAKDQqUmiTPerYaH9HR3`93SpG*e1r2GLG*bDi1fFN3)068!V +rPH!iG!!8iEHr#Y)+f0D1&fGm53+`cRad%fRDQdJ3G4RcM9d,[qHAk'KM@(3@4G# +!'bm+kkbM2B2N-)#`(Aal22,LldlJb1a`9VkiDAJi,aZAN!#4)1MGj9m9CjMIG68 +l[m-be`dch`k`i@aKbR890`FA+f4X&,#*fP`)2(DG0cDAcFS0!l2DBR!-%%N6,VX +`SErdZl25Ymd)SF$Va59"A`IB[5QcFFmQ%1S5*Y3%i*FcD-`2i1EjdBeU45&`0h, +iGb)KJ53Gh"-,!IT3aaqJQ---IZ!bYl!$b3N'+LD,+IZlQlS@E%S"eh$hJd-8Ak# +'(QQ025qPSfXCYMSYBpP"N99[eH&B9YDrb&HA&FQ2VP5AM!E(JZIPc&Ke&C&AXcK +SJa&Aeq*2$3GBaY9R5L3Vp!([q0($dS5*ZNK!%$F-ZTc*3*pZfVS4Pr'0Lmfm"1T +p!++EmXb#Z"JH'(bXI1QTkNUhDIcJceI$A4NQad%1`VmN1Tp,"('aFS!#$+Zfj+5 +R`![B&Ghe4fl6Zj@A'5%3"&jX&@k59DQ4dc$&+4B1NiGY$5,eL@VIUpiq'AKB6K+ +)Z[`f'b'`NV(Uh@cDU'Dj##80&`!$UhfXZSb*b93NV`%3dVCdS[-2+-jXilqi&lX +Dbi1e(iF,*BcDBbHB+H,MN!!`jBiEcr,QN!!3(&F#D4(@1)L!M"$Km"%CF42a1%k +Nifla4L)SYa"qR[38&lq*Rk,L*(hX+Pl1(e8h&hPe&9M"VdYCADFqPrJ3T3mML3m +DICK+I!M6KiV%K`Kpb)d&e!a-ZV@k4$A'!ZiSLeaYaM4#de51'E!IL@@SYVqkc0& +Y`NKm48MaPK8F)2,2'B%YR6!kebq[5kNSdjeFq!A6R5G6YP#i1rp1af53!*QqYSj +*LDB&8-&YC`#5aKmd26l,DMBRIFe'R02E6QB1Grk%A@Qf(Rd$DV5,e'McHDNc'h# +[#I0'2(,G*YU3!*5e%%8,+dG2NVEplqM+j5*%&d+&X-YBf&-bVlQY,bI@0,%0N!$ +BaNPX8fRXG#q*VBr%GS(%9Na#Fj!!d#k3!0"8%PQ[kNJ)kd!-*!De+L#DE%%S +"3[%U3ZP*#-9-##8NK1+NE[Dd$3lXQ8+J[hh$$6MfGAYD$#SLlmBYrh(XU9M[XAm +aCF-E4qY4$201Llr,0j'k`Fk`dq+BImFR+GFD'ad@l[CSS+2GPD)VUk8-RC2b[Xb +G5%"S8!h-,SBG(5YZh(qH!Te)GFRp#39b!86aY4VAD4aK"HLR-C%6,Ye`b)(E'UZ +FacSCJ-B@akTVETkdRE5d9YFk,9&,V$B@`dfGd`*bNpI*$@p*YC,+L1qVq`m&TXQ +&Q"c#@+P4F'#(%h`G1m&lYc+lT#Lq-,SE#hH-K"XQXFkSjq%SMp3#1Db6d`*Ak+N +(QBX+"$GLA'9`*r&!5M!LXP1"l#S1H!!3PM`PALZ(@2GeN5IhkaIaa$q(ce4dpPr +HLe@KqL#'!&@jL1d-D$eTFCdQ!%J!K0mM1$!YY@)51HBZjdG+`M2m$4C(bUA$Vf! +'5&L!Q#ERaBB"@r&(Up(lS+&`8Bd@283`fb"JaN%8QKUKL8NT3@HQMH'ahdQ1DdX +Tk$K1Vi[dB#NfSX#f"T5aQJj2i@G-CSSYB''+*T%HhVJ@PplaS1R6%GGT+!#TlB* ++ZF"GQAkX(YGB8*dVE0abA@HB#bE5MpPC**!!1+%,-(M!fAimmQJhZk$)(BE,RiQ +Xm8Al,cYZS%'5mq2fkCq*`"m*0Ra!Fjq(!)iY`VRUNCRAa-@rh`I6j-@X"NE301+ +5r0K)HLE`!!6ir98ZGY&IQ(N0+Qm%CPf-M`AkH"q2M%CDmD'C2XbLH%BjSHCMdmM +`mQSEGiIBb)RpmL&Ud203hfPqDI"K'9RkS1R&Hhcjf!LE1QrH-iCM-l,R3G1L6Ec +bAT)paTIa!&*0q%RqmTl-b@EmC#@#2clqXhb6r#br`%2SB2TRZr6K*bc[q@(d[SR +%"K-ZrV%[RYJI@31bcBjq)qiNNHf9G$0"0kXcI02m3r&!R$iH,2"0k62dFDP%ISb +2EI4!-6h!kRq%b2j@RK+E@di2q1L"l@*KT&@`#(MK&5`[h46STNCjk"h&f@M%I8S +dNU+EHh3$Z$mD*V'@#UDPXAh"6XCQ#SLJ$`D#P,)6Lfaqdc-!KQ)PXm%SRY9'[$M +IGT)*N!!"i$afX1dbEZ`2Q[C[9BL4M+`fl!c('RD3!)PA-Nb8A[R*CE$&Ab6a,ZI +Mm+F04ejL4d1%#fZaZ)F@Zf(kbh$KVEL`Xc!IE@G`JB%MJ!0fRN5P*b@!#3%di1& +b5JCYTk2,(M3G,Q@`&lfiLe4(-9FGM5HmV,6Zcc,mLb*MakA9KL[,cN%e@3X)m58 +i)1edaa89+DVH`SfU$$Xkc3Si3Ec5d('dJ3-)T@)(A,TNcC!!5`q3!1%J6HpCG6G +b8H-&KLNYS&`5KCCB+&bJ0aGKFA01rQ)JYS`1q*j2`if+P!0!KYJb6kqbU3P5#(D +!1#Z10R!5-VE5b9@+rk5"+K@r'bQT2eb2VI+$FCl%YZ141Z@4+[%4iKB68e%0*Li +PeqdA&mH8&ihi4p'e8NJ1M(,AqQ$Y#(8YTDZR)03&lTiIh"ijMC[lJehpJl[dD9C +dp!p1JEhm4+L0$piI1Fd%&C952@%LTpp6Qa9@K5VREr!*-RZ)&&U5&"(-&GX2X4* ++Fml+LZBeihZDbFdILDk*)Q0Cqq``Nmc',YrSD2cCVUEfkHLYpN*Jbh81Tk!!iL" +QJFFk1FMl+JT#GMVHNL!(fU@daJbQiLBp`3h@10N!eUR#E64CCZFbmeZlLi`912E +9GLEf&%4NC#FlVIZXSYNC-8RXXS)806Pk@%4$Y("DJb26++,NVl2pXeGS!q'dPl3 +"U1,8Rra1DXqmBF`A'Bfij*qmJ82#JqP0Uc8ck#!5T`63a--D%PF+qa!ECSBG$HY +BGFhkcrL'dHfU+1(b(-LAbBj-Acr($a@NVc!crf-d4T!!%I`!'-221KP81GfSF4H +AR1T-&U5rh@HGR$rb8Y@F'*eJ%QLe(Z%J%+iBib3rTeQG[8Jif3YqGmXcYR0)$[9 +E1%%r'YcpEe4`Mk1iDm'!GKB#Hkic%*'00pjFX(25X[(QG)SHUX9$MkZc#!'$Khp +(K@mfhVaIDQ`mA-p&cVF,TK&3MTE2hYMpEb#&JipRq,"CGN1U8CE3TqN*-)mhd05 +KKTCSI"N)lA'IM&h$T0BcD`6fk%*PX+iZDZ(@AjjN9!'Fe3[C%#I*[B%pD3eBAV8 +iHq(5@8FQ!C-VQ%b5Sqfdf13!2QVK!kKTMIdM3*)r+Sp98A(9SF+Tf'F-EJJLd[P +9DB`E`IJjGZ3(Q`Ia1e(8Q5,!14NBQmbLiic*(+A6DpM&KpP#&KB)3#8FcTVGNEh +j#cmG#)ahMrm84FlNhR3J550FYmLGV&*[&N33B![Bj)Qr2`mS[EBJZQfbS#H"cp) +P[m$'a5bDD0JKFcUlpU"Tcfe+QdZIbN`ZQ1mHBjilYYGX2!PR)5Br,5!lJ+6l,h0 +&MjkKl32D4TI2UBCKll8dGL``JFVeYXSFJ[EDhM1UlNb9G,c")!G#pP@m&9p"040 +(QSpemV(+K91$&jiY*iC0GaEBcZBkKX*%3HE1Sb$aB-B3KFQTq4XSbZhdf@Q`3a1 ++NaSF-lXFALV4l%aQSI+E@H@RZ`B"P26Ua8[0!FUXNS([,8Ub(BehVV!$b+h,e%L +,S$iB'6E1#E9#2MX[)&Ji1i9BFBfL3Ec258j-GK,),S3XZij(&@9Db1PLDBT6-a# +6hHF11"C9b"6L9,dGh%aBD85a(Fe*@6PHCcHF"deE$LPNr6RZ-%F[Sb#3!%M)j&8 +R&BrCeYeiilj3ipp4arRM$aT8EI%(hqc'*UZ83QqK3M-6!NmPK0-1FH1PSd%mdYJ +U8p1bHZH3!!#P6P%MKCNVLm`-MfEECi+BM*RY[d#B$*3aV+F4f)(,id"PQcNK`J$ +CX(#FME5eFp!UH`TjNb(m+"cI4'Ve4dML9rRad5-q2)d2*AJS#%(9CHITJKBp"8* +1TD@N-Nafe[+h8`0e1*QaHeA&HllQ465cPelMZVrAFdd4h(1UJjh"6U+VSVK6jf5 +T9&h1UleA9leRaR'C[aAQ`-E`k!dfJ3d@Af'a@cRSK#FR$[+Nc&%CSBTE91X-B&N +eVL5!VX0)d)!ElSIerPjI!8CS%YYKGdFA,A3305!6R9Ca8iN1F8kU9ibI'c*QS%b +bjb@CeJSbq*a"kJ0N[`9N[mAJjQG`T5mfMriRM,lHb)2KC'"VNjUN!,)HIcBTEN0 +@+*!!4Qbp"e9p'e[V)3F#cCh&&P4mr!X8bJi82VZU1A(`+kc!U(XTcIP*FI8)a3A +'e3Ib-k-EV$,`3$Nj,Bc&0Z&2[Cld"r[a&fM#dXJK)EUHrD+T1-+1jZ!b!G#L*[B +f`-ZYF&(G(LZ(JqkZ@"QlkFC+m2,*@!hBSD6#L-P)P@&h@"T[c!lJq#IaCcrql1) +K$ll&T8Z'A(U4,id+ELA5mQ3cZT0e,2Ef"Xdhi3r#M!jZ`'G-9XkFm'XHk`E0Bam +11%k)TJYJ6jGpG4QFP54-UFBcc$q0@1l*!1#1a'VBM3VSa%G3%$`Cfi'P`SQ@PJ, +f"1K@YRZF'pZUc05@p`,dc*VlIK!ZiQ8`TUed-DpbX5FpeReYD%B!TmXi91'QSh` +*L#pAL1Y0d1)Xi-A"`$hfbZ4b8N,Pa!3$U2ce26edN!$-AYG"c5`A5NSG)2-cdE# +K6$6)K)T`*K51bUre#i%C0JHV0QIlTQML9qEEM`fe3!eCLF`B#49N3!8C3JA&UN" +31)bU421H'XHCJRh$M@QjlTdKLQLplP*P[#"E-Zbm`Q(1HL,9DkLlE#S5hD@GP'2 +lm)I#U4!2e!Y'#FAdLM'PG*F9qqJ1bkJlb1$[S95b5TGS9'A`(@TddhTH%JZdNS& +h0Lr6[#ZY8R%C39#LUcd8Ble3HE%9KA`FkNe*J2D)KU`%ha3)QKXP81k1fNG(2`U +"VP3[c!5K@Kr&Rj@UAeH6`3H+bZp#9`!TQbl9A91#1ijia5Dq8KbS*Y4UN!"CrNF +pe#8FA4"0kkrC)&[riekX9EJGFN%TU[HRH(JP@+q@Q@-JBUdk%8-)$!B+LB[E"Kc +B`I6QmISl5R1!eA#F-jqa)AfVSF(#kJd$#be`#!Se$NcE4`(ES*&!lGl@f(T1$$4 +C"K[VarEkT8rcprYq"MBCEMQVZ,JL6AP2b"eYb[[Hjb32M#p)UDQ$p"'X9HcJBjb +i23Jc52&@1'dP2KpY*9$!PM9*E51&H#kD&84R#5EHjVm%BL2PkR-DXefFE,iE4+S +jc)hIZDQTIU56)GA9j'#*+JNAbbf@Tfd-pB,Tbf04k1p(BQfqm*d@Z'AB9'C6Pm% +*i+HSe#&ZF!Kh[A*eKh1UGfT9#j'DlkD4'T(dB')6[K1J!hBSj14XKL(k0UL"0VM +VPkSIdrB$f(kF0iIQ3khRSZMd$%2Br-Gm"@iUi,(MdbEqG#j+61chBQ[8&%dI`P4 +'8STDf*K3#M-kk!ded!M&Q5@eB#1eB([3p+-qaCee$4cES5!*e,iX1JDR%f9@[DQ +SKieTbN&Fp$Ym8INU+BL03Mf`8+!FE"cbbbbBb'c@mXeMU-!Z48%BZKRh@ej18FM +-MrLJ%UL,Yp445PU)EVfG1[03aUm-`h*BGB#'MkE1)5Xj*ETQD00jUj98KdQU)k@ +!IGm'f1FMX1m2)R6qZTXK6*!!SbC1ChS'+$`H),M[6LDS1JZD![IaKRA!ckN`P9D +`Iqf1$JEh%,VZh$Hi&r'aNfa4a0EZ#5F*T*Ef3A#1KiVKMEb*!B!Bq%0bk`@`bbj +$Z$YD5Dhi#Gir,T,lFK1VUSXIb[F8Plb8!RMEQ9"LN!!,*d&#B2AC!#D4j2bA$"2 ++$$F&D2h,,+c,+`Z,r[V,Q-(p"`d,al$`cPpZiGGUPB@+ZbR"d'N!4QEI!)BQ!!b +V04h!!"5Q02@L`8G'5CfdF4&#f(Cfd"ar5SCMfd%BcQIm2,$'HFNKFbEBhk'1)H! +pGRmL%qM['0@HlA*d)hMY36,dZT)BM6BHQfh1"4aGr(Vh[qQ[PR9-2fS%$RHbZhC +f[[(BJJcHjSlHH'aD"Ld&9TK)"+#"a!3V6+J*'6c&kT3'AhS!"9qZ+#S-&D2'5GQ +AUf2q&c#-@)E9-"eDUaaCSKaBTaaBK`0hURZKX-T4UEKq&,0(G"&5PG&A4GI9hF[ +h@+"DYi)&Y&$k4)2U!m-`a`m&YeY@bHJ*Y0N04JI3HLbJ0"R#S5,S86DDp2GlC(3 +YEa"ESJCPbTDUX+AGl$lD1,$`,#C*N!#03dGX6&(K8BAJ3Lf(KfiYXSZf&U5YfDJ +a%4KJ%PiP5)X0SMAEEKIbaf8ZZ2[e)H),pAINY2*Z4pIZeb'qd1(V#DJ#iZ181Vr +HrEVqUJRL+i6ZDJaT%%J#!8Ef%N`#!8CXIAiMILS-pRNRYZ8DI*4K-D9+1jALMBY ++6&@3!-GJ#PAK45e8P5K9CHA33Ui)4Qr+Q2q%M`dlL6jJ9mHiXR1ShSB6f-J-0K* +[2)'0,!T4#2)T"MA"!U[r"V[pm++RrqpaQI(h6DR@0'1mZ4!Q`lNj'hCd'r('lSA +Gr!2(J")'iNiP1Ih#F,PkM6mN+K4+0jFK&4+1K4&8Ce9LUmHib5jY&88QAaI&)ED +U,qB0Zqd#QPGFkTj@Ri164*XlX-%#"N'$fA!$hUe)Vm8j9DC@m!"Kf6L$FA-@K$h +4(m1K$*-J*N&-!TKSQ)3a#@$bjSrCK3`0+6$Cb%!KKQS4PbSI'U+4`lT959'Pd&a +!!e1MjHaMmmYZH#DJQZ''CAb-SCpZq*`VZZN6S$eM%`m'jBXA'2#$`@,E5AGXJf9 +`k#CV'Tb%aJ00%dd-'"RjM-YYrY"f&ki"*S0G9@!H#dCqrHHB@ADkN!#JpXFUGIJ +$lRAR4C+Ki&FAf9&8lL3SNJ()QbiHeUY&54U6Hr#,R6c)KR[l8CX4aX2elY3c0T! +!*T!!Vfhmb"8HS#r9!4%%TPI!%E4C6aK@EqE$I(C@J6!0K(")830JaA"AjHQhdq- +33eA"FHa&H4Q-h4ehC)l"qPV[H&(UZqqkXaL3!!rKL(Hm$`P4[S'c)&iE3I(#k*l +*'`iNDbpc3``-qBA$eSmDUE6'&A9F@+Y%3kb*Zp*)FB&Lb,m6D&LcpN(6(qpLm'i +Z`-0#(6k*+VZB66M8@9J#Hjrd23FeQI4pJC4QPI-&%(a!k8Cm`2)6Lm-#0Uh+C'L +(3CR+KcRG#%&2cQ-3ZVH&qdmf-'ilE+'YZMJ%EqXXj$r"`c+&m!r(VIFcc1!40jp +$`R2#J3XDr!N+$@N,EE!USLN!1f@qX!SE(h2QH3JZ(1r3MqE0HV4qr0#fl95&#E! +f+3(l*MIhR8jVXPLT3pIS`R%`4-aJXjX*8J8)K#8U"##jqQ-"*2YkQ0$5Uc'UE$0 +HVK8['CS,Tc@%("cNLN'Pp10aBcd94`8cF%qTj1)fc)a&lCRNLlBS4b0CA$fZA2D +iFPRp*4)Ee6RPjIZ6Y*h%5c4%U$D9Pc2S9"$%,rSb&a0!Cm8eGl'EZpT'G[mbm9J +,TCe$,#"d&iJ@J`2@5HfcR*31%q#BF&89#H,dbL5+b0Gh1Ue3q[T1*e,%qbaL@XL +9(%XXj'SCL9ZZ5*bhhh+VF&(C0SC4flMAGAU`S*'@BY!iM#DKc"#Qe'D#I9`cq3r +bdMS$%)H$ABMJmmbqp*h@'dHBLiB`19iXQ%N6c'3[c1-j9LGq9T1Xe$j@AUeb1rr ++@aJhP[Y5hcapCdA8Q,XirLi5k*aDN!$b#D2I@-CX,a+kB,9kRU!dFpLiRZRRe$- +2)Y6c2#@1+d@5RPeKhPZ$!4h"J2TQ%)M8'XrbrlpLej!!prjF'I,a2EpaF9,U!d# +qGi&[Cel$B99Ld%0Hq0%iUUh0j)J9"&ZjZD323a3D5Cm!QTpAHifN8$AF34SkTmj +c-NmDRf2A$,ph#Li@+DJ4X($iK#BeSJ(4*"UhZ&Yi`XNbFVp%ZS8G'L#@fhfF'Z1 ++hN4L$)`h%[QDFAApTb`kTESjT0f#A(M#[F$i[1ZdR[J5aP!N2lN5H3GrEVRP*rR +)Rmjm'&Rl,35l3`L@8YkP*&ii)Z#QL!C[UJGlldGkqL(Zi&XZp*hHKpM,@1a-LV$ +G)`@rr8&6q"ShkMj!m)p5`rC(rmUE'6G5qa*qT-2S*H'[*C'I*B&M!%lV8b6`+Y% +&Il9#%IDXF98IUY'leHMp-J3H@8-#4l(pkJX*JI1Y6aIiVm)Nm"U!jMAZr&pj[Ef +IMX04)(cJKZ!LcZEB1`2h!J#K[A!Lk'&494fL`8A,Z-'eBKK5lZ8`f*P(TlUVUh` +d98QB##q2r"i9JPPC$A*3+22fAMNFHCY-"VFJALPX*Krjf$"j)[I#eCT5526jVCP +2R,e-GZ%5mI&N%L5V%XYE*pm80qlLlpT`!j&YEZ0%FN(#V(#a(pHb@IP'NAJl&@P +&e`,$PKkSrMmi*AhMY'K@#*KbCjm`3T!!0'1+M,"+L1$(pIXf3P*)!KCElSNlqiQ +B13b6Qi&Xr)0(+hT)c6jS#Xf#N!#Q`!Bi1(RfBUI4+`J-0b6L`6mh2`'Mkerr+5H +UZ"%m'jaqSEkd#c%$K)2LK9jfNNGea)A@dSAZB$$C5ZkZZ"!U'[Np,Z3iiN)fG1K +q5QU(M&1b"d-*pr*P-bpc@3C6*3h53Zj`P+!!XAp)KFS*0-!!",2f-60VJ`1-YL5 +'f')'+V45$'AV#a&VY%X-5FXrk)*@L,51'#Q'(q[F1H(%NHPhArUK64dH$1Ra`"9 +XS"X$$&"!cdbDB4i@V&5Y`NVG6V"4082CU,X40B@KLEXp*V0eMJib",@aBhDr2Th +1mk#Za$3eJ'QD8jLQNN%f#4eYm+E%%!aBKm)X055BTGTp-8YF'%8S$#h$V"'k!3p +cfb181$j[B"C6qDc4jh8L&)r9389Z!Z`"mdRVE)G5hGIZII&I!G"h-bRcK088QPq +Qk'G#$49amUX9`a$)8eB)d!5i*Z!9#aha$&ihC$@&MDSDC+23q$0*JbT-%E0cNeL +dkRf`D0A1Uqa##%DYfY0-$4E$F,q&DST-#1@ZXf,SHNjL[hJE5@E!a%B-'QVCb!Q +(03bChHkaTYU4"Ai)+H'8*iAMK)[FU1Zd3JK3&(BR19@JF'*9Z'hQ,TP@e!`NJB@ +2VQ3e&&bJ`@b6RQ)U5LMfGE1L)$dUNqZ845P#Le+%ILT#MB[32r"#aCbQX)*3,Qd +0K6`(c8F`JpC%JD8aK()r-i3Y3iBXi(#)ZcB'T$e6F4&EI"hG&0Y5!UfEECFcHGF +8"K01X61bqirIFUbkk)i"D)9+IZNlLaI('I$ZI$M`dU[k"pm)J9%me)V*Jd8A,0` +C-d+mqF4MFe!UrXRjPblc*``P(RdTKNqI,8LKkZQK1*SX3(4IVf*`$@U2e9"X@Gk +M24akkG@QQjJ%AVU9GS!fQ$,@AIcmEf#3!0d`PSlLcamP@$@6"hVJ"lk"i9aMkh# +4j`XA3H6BR@FG'*hUEf+B@SZFV*LqHqhHc#Gik$MqR(I,qNmaZ#fjN9"bi5c58XG +Ml`"dZ6A$!cCq'mlbUk!b,L0eG4i*VZ@H1HXm"Qbjk[8$#NH$K29Mr"JB'X[D&") +jD"$hQd[2,F6@`iQeGIVHrD,B'Kp$p$3dXJGGR3Hc8Tf*amc%Bb&q$%i*G#%--C3 +ie(1)&S2!Q*IG6`ZQJVDjJakHBjIE@!XHh`&eCU"D)#i4Q-DF((rA!hEC(0(9V4J +Q9eHhH$8MKK,'JV1Nc%0-6PM"*SB+jTIZa%XNYTfI6bcUSaGK3@J1@,C+Ire,GZl +6dKBDD3[$"bb-$PQBGN&CNVB`GH4#ZAI)`T3cd551AQmDmYT-1rCbfV(f!ikp0Q5 +KII"B(VTpqAVMmr`L5Pe3rf4Nm#%aq!L6X`*5d2$jR#r#S,MCH#SIJC1$bqpShp! +aAEZKBeBcNZQ$Mr$!d'!0hbCQQ-'$CQ)9'a'Bj)N&r&!80`d&VF!*iF@l-@ABBM& +m+N(cXHrc!,+4EGm86!GB(&2Tp)XA(pC%&qF"aCP3!(3)hBhKmAU3!)%5'Mi%3m% +2,iYN"E'Bf#T)#!h%HdUD)fMm#'DSb[[RIAmNh&Li-bJ+&#TcSJ`U%dSRH1Qe)5` +SAj!!YbmZLLkkb+c6ZM0`1F8N8NlXRRM9l-i5)cM,"bA0elaL',HA1dVZ%ZcRZR0 +p#L-D[$4iR2cBl5,#kJ+lPb,Qf(KY5'"d`)&Ra3#LB*G3B@mr!SkEDmF`V(`rQR* +#HE%c,"qNLDh9[Zc@jN3BY)lBH`*(A&k,1dpEd4#S,#FA(P3r@X1",84cDbD[jMJ +`B5DkFTGH)APC&*0m(dI&9V$La--m2$%8TCNHY!UcFjYS#P0*,V#9"92Y)D+54N! +f[p9hZVqGb%flEhGk%-0'5)aQ[a1$a%09qhNBH,'K,j83$#'raF1I*Kjq)[eKCP" ++&mQP'CG2GBPJXq$LSGrrDIShX`pA5)[bca%!""-NDG9>Q+h"2X!`hLcDR8j+L +!#2'2'e$B8IAJYdpdj5iDSGG+-q0#$,c8S`qi0%EK$3`cC3T$jJ1p*JqbJH%fTSa +3Z['Q-L1R#fH,R$pmedKGX0bYY(9NmR!Gepap2+cf"BZY`jR2!2CY1rY*AM44SLR +pdb!d06NXTDQGJ'LH@M'edl3&8bY0$8aED1V%e+"T"P-R6A1BCQLDa64(dafBCQQ +kL1N1QPCJZNM62+B90"h!0%r6F8`(D$U&k6K0ACK1dE3A8aG0qc$YTHN)R-qmQ3! +e&j*rSf8#!afI$%J6IqciBm@I&[`aM-!3mT`N-IU+Ib2%k2bm`XMICU2!2eC`@9F +hZK+Y[TBBdSLELA"h16LjA$H2)#HC8J@`#@$+p4F`IUdfrB91ePGHQlj,C(dYrUa +KXXkKTDFBYffm)AF%`m2ppSR9[!PqKHlGT5rqebrHrmf"Lhfc[+9UE[$AKZiG"FP +G'`Z4Dd#+"X3ed05Me[hQ@T8*V@m1(`dN3RIXDjNlYZpP81C"K1SG5(%91I2#PIp +00aNS3b4YANHaml[r'@F3I&$"eY*MA5-%&94Eq",9Yp%NlR9Q,USEPQJBc1SZ[P` +e*i1ErrjHpHhB#&hqIAk0-(i"KpD,3pH1#9D4Km'(dhU#3*!!JN(5A#F85V(G1LH +G[8S$kVV41!Bd@ZaMjmp+RF&d@BKi6+eh$SEi)%F3&LXV-*HASG3C3Y@`QC&#B+S +Lbk1Eh0afaRY&U&JS4)8PMe5)iAjm8FF0j61VbDF'2b1pN64k(3L*q"+$c15+Qji +iA6#94Z31LN*ah10LUVj'c*@XhXfZ"%06a"HYBf,)jVJB0J5*h1E$ec2fE4f&+k` +ZMB%F$`I@M&3+1bYML"T+CphM`-24cBmdG8fA0AA0XMYbMp'YqSaH(Z"R@BG[F94 +c'mpD1$AS0M&NhC34e)Y+f@BPN``8dJQT83VUM,KS!FcA*mHNpK9F"JeCZ8&,NJ% +S#R0kM#iZ"S2FRY26$"I*DC@ljV9,Xm9T#TD"3MM3`N$HBE+ihLqJYJ)B#,K)G%a +V'cVZL`IFp-"34Klr$-LN-X5iPP-5jH1*)daL%KcEISH4Jck8XihYF!$f'm($RF@ +AfNlUe981LS1eZL*RGE!a9%cQAkHVJG!#IIKE2K`%cDi60)E8B)BUJ[,EQ6`(m"6 +XZ8EC,DN5L5q6!dpM(K!m4-53!1(-PHpIN@(m39,QqbJf1)1%24PbNf,$-M'i8`@ +(DCcF@EHCBCf-r$i'lSHTGIJHd+)*,%SHX)MKA9ldD0UL#5cU+6+IH4FNK05JSak +&XE(r"M-@X9-AaB#4U($JB`ScreC80p!i3U6qT6qN$jmN"LI9"IP23`9CSJXbHSZ +K!K*NL5,)8,SJSpISJ5-%'AfI"!R3+6SV""QG5KaK6`L5%eSTAC!!,hB@QdF+-YT +-JNcT)+,feP""DVF5JLa4S"L4dUT*#$2mSK#QHB!`l6$$"LHE`&6K@IkI6#e$`'m ++LGXH#-HFbH-R6S+bcm%!2+0$"I92erlQ0bbSbY)d3GNK+2a$AE5XQBr&d[JqPT* +CI+NXE@Nc,G9SU99CDMpJ+FJK,AdVEDQ9PmUpY,4(@GUmMkAhDDNlE@N2,@fJT5h ++8ZZ4"SQPBVYcD8YEX23#,5apqBArM5kjZ6TYB5N@PJ*1EaAra%M#Q-1k-9IVaX` +Qp%5k-8I,b*K,KKUc'+#N3(#G%8`-mbLJ[@fU)F`"N!"1ceE,0pV"PRi'@q!J+#3 +H'6Vib-9&"[fHk#5SCC4CibGZ+f&5#jMGU+FCJ"!23"8fPd'6%E31JT[R6c-)Njp +i3'"ALpX33BU("41NS%1Mikap&-6)-m6L9r)rTLAV!HrkA9I(iZFjR*YA`VQVD-C +qBlTff3hIqh"%d$EFm,P'JlhG82#"SZ#HHTGP5)FTF[Cq&JUHKdaN*`AAeGa'06j +cCDlp+eIBIC!!Q8dkXRYk2alU&!r0)4KcA+EdSbB'6k(0V8%B%rDBR'*k2)l!B)! +rk+%)!6TKHSPd&BD6Uf!Li4RPVQ@ii'4X6l$XqLFcr40qTJ3VrhJ+KD%TX'f9$L6 +`)'0i'D)`'8!J-bH2Ka3K52QR*!BTh`'3!%@1H6$JfaNiVP"K@aide@CSUCdArXX +!*d2%j@T(FAc62aqLebRpmcqAdqF1%C66)JYpZT2fD3E(p!kT@Zq3!'T0-3M048c +$RBRNB&,m3db!DL5FlIhVrcH(#$4m+Lrk(+AF`NCF$'A'F%`D["!Nf0VDM)GiX&F +!`@2i9b8i4BG$eim1$XM'$aCrhADbZ1HaHKi`*hU5r9HZQ9YHXQ"BC'Rb"c3[KZX +MdT,#C5Ne#)cc2hl%$9I`m3M)2'S*aU3X0[QI1pRADlD5iTi$Ak-V5[lRm,MCAbc +'4[,NCcM8Cb!dSba'db6TeG+f"[&,ka((m$#T+G&e!3dJ38CZ*LBDLD!"--%9%c$ +RGU5EZ2&Mb@"Mi24KZ!#3!b%Q384$8J-!613293Xp"#55E4,rJ`-[H1YF#A'STIU +6R1H&)%FcUFYB0J)525rdS)HeE*D0+0bG'Tl[!+'-kf61J*EDE"H0c@3bEMEVC"0 +MJd[8X23fQl'C0*006CBBBkfe$Z23P#4UV3)b2KriI,rrrqrZGh#JDHCphhfI!"Z +Yab6)"5!)!L!bfj!!,m[+m%Iecb9"5TpGH6"GU[)jMP8Xd8RMcDYBiV!02*'L%U! +d&Bj%3jq[fkEXe8$1HBlQ[9$Qe$,[IMY%L48[1faIU`!)G&-"2apL`1kFUTEQ4`q +$rEh4QTcJkm12(KlFAI(KB+IU([-KFipkrfT`GpPF1PMJVE"PUXU*"52S-&D("dJ +)a*1XpqiIKh$8V[THG*!!k1LUYf$[DJ3E%0b-J'p`@f@HGmM4[,f&"Hm,(MhFi`r +Ai-H8kA8fEdQ,CRS6e%11jYC4NeIc&Bj!N!#,EXMJPX+4ecrDNTECai-Qp%&QI9$ +-B6Zm')2k-8KIG)YKd9l$SJ9Ed[TQU9jLLhh"PM5(l6XacJ`e1(S"QqjKPVf!Rm8 +SeYXRB+)KmHYLr*b#b2X&qh)N8abfbIFSJCqj$Y[hD4,m90K`X"NE2mA'5Yki'6r +h1'bM(NV3*,5XpYYT#)@R,kQBBi8Fm,1&[09Q#SNTXa1#YbE+bX6f2D*!NlmX#KM +@Ze)8k%($SS"RA[5)!PeLLbM3p6i%%el,4&m%i0j9-HI!K2*RAZ2#A'*ZH0,&Q+e +ATj!!S11KNA$h,6$#AZYqZ-qa)RZN$m%iJ%D#6R3kC@(Q9CUXl"Sbp$8Xpr`""8# +X6YQF@B0JC3SaSa1Nf1mm'GhP6%2(4fj95aYiq9fZjIrPqD%4qA!'V8j4!1MD#m@ +&#+c[&J'!rMHDETd-%[SB&GN01IjdBQV@eUf"K)a!6LVDV01Rrj!!'%Mkh&9@kYa +$@1JlheiYaFhK!rCb4h0AM5AG&0IQ!ra'+BJM"E!-fXZTX(FERY(Y4'1Bkk1$9Ue +`4(0DVTZZZi4b(M,'X9#1a*J-G2XF0RA(%%!@!0hF03R3EqkD-LQHhY,MEr"M@Nq +'a9[303U6bM2H)4+l)hKeL-&F19aJ$J(b(NbD1%"24rB)aV4q"-V"'Kmp)M%ek9* +H@-[)c82bLic8h+5Y@TlfM&C`-1&kiU96J3L-iB2mh2#PM1Z"T+6F*2dSN!!A6Mf +NRdPfN3KB&rSD@$GPJLP#QarZlRNekQ%f(V$$F%X-'KSTK9fGqL5@1@JDjUS3)4i +BGFE!mT!!!9P!$'rbRre)K6,,jI4J4ld1FPC60K)"D%UB,SKXa1+S*4d2pd#pLTP +)m"1MCFaaH`a$2"L3!%R,)#YB%1L`9a(kC")p4)-cGk&c5X8,Y#J)8X8)JClK)#5 +%4*m@ej+p"Bdrd)qp13-+b3N#PXa4)rJB(kk6M!AS"9Y5[!9,0b+4l'KHfLLRE[A +5%c$SRp")(++"C-SGA2IBbp2TRi'Y+S3r(T!!i)UE+$T*ZQQB*EdSmef!1ZS@(TX +*6G)PPp3$b6-J[JD`Df0!h)2!)JQ)`@SA)-S0G@NN5L5$*B`&h3$(+C1B5J*e0*X +cN5hSFbU`f'&r#m&b*j!!4lM2(2rfip%Dc3QNPFBC!eR2(0GLR29LNE1H[CURU,1 +N$ieN1MriHE6A(ZTlN3GI[Nf)V)UAbm(JLjP6IFI&35B5p+aAL$KHQI(5G2,4B-f +TQa51(%a%4T!!f@MVeS03L-0j@NjZSTEl4DU@'p@5$ZD&!fHFLE$VHQld1Zr5-e& +18#FACDGT-TPmUD8ZU`E&'&`,h&QXl!Nbl"14#16!j%FJSMc2D)3Z-'N0iX5H8J" +l2GJd)mJ@%E#p"BqpC!A@%eUm$afqNJ'BQDDE0,X!8#cN*LF#IY4q0c!48PYF"+R +Y0!!6,@`MX)KfhbCJV)EaQ`jhmX9fF@%16hK9&NbU!36-UPQGh*!!&YJ'mY,a,,l +'"kjXk&Ab)PSD(mCS-3Lj)a"D)MZ0D6HMDI%!F#AK85ZU2`c8@IDTfeJc`aQZQjQ +%E1,+F*Apc+59VJaAHF6!*0j3Pda+VR4e!*&Y5fe6(ThGP1'1p-SLCma2aDBEk," +r1Z3Q4Z8i,h5RLaL9aiSXG+-aE8cTK!%3lH,!K[IS`5TS0J+IbDXMeCRjp[Nkm*N +Pm%dKF)qpKUHkUe"[!R83A-j&&fTe!b#$TK["1Y0S3hJCJ'-8S$(I#XeZ4,"D2RZ +kDY@0ZU1NTXUT"[F-+"TBU13QrB!"S`r!XX-ef5%'&Y00A3PB%#pV)T8M[)aG-#+ +L)mY2JEcHiH2j460)CXijRe9Hj&PVLPff[1KPmI#GVX!K(FK[3MMMe,XMeZ#G&-M +*2jJ4+)V([QP%&RN"BcCkH)S''X*dd5$qX)3'm@eZm##DF0KQ&JkZ@m@0ifGH08S +Sp$5%mKldT`b&`hTK@#NR&G"Cd%5L9b3F)K%A#BY)Q,d*)6#ke5`@'5Yf-'QP'1Q +0F"mp#kjDSe#',"JqLB4C*-C%BT)5I@&UTQDZ8R00c9(%*KXGp9j04b%*+ZHP"Rp +"6FjSJcrAbie$mpiZf5P5QcL$`mfJ23GC2Pmfcpb3!#F*j0XS-la3Yc'dU`d,AiA +$R4DqN!$cNSfRYXQT1`a60r$8VCMkSTLk9B+lHqS@UkNaY'X46Gd`9fQj"iSc`TN +m0*+VR3Tq[GP8DkmPKS*G&RZ95*V0Y4[44GTX6,f8Ph)`re+@PKIiRRBN2cI +MAUd%PGC+cGHh"4)Z*DB59MIX,AdV1Z(Vf6P1Z$BJUcp)DUP&UU8aqq[U!*(1XR0 +S")jGcq$J'A4CeS-K$jTI9eT+m)([)K1rVVDLHc@%cP@[Bm@BJL,e$*al9-kYkBf +rZ"-+lhH9Jj8PJ&PC'ERF9+#TEbZR"(@5&l`[ZN*dh)ZKbrS@dP)1fpR'UDV#%5# +KZf`,Mi"B&IYFa!Sb'&5!Z(Z[5@*9!!`UZPc%#Qif%SZ'lYY$a*+6(hq0e656+"D +De1K-QA)Qir#BeKeIU0fVc&p+mkQHj1LHc(%al(f6JLK"`BP&'3IaY[,2%ITmhi$ +URPY@eR-C'pZq2ekQa&9Um'`jb5*H@*A0L)F41cZdQZ`4kFS&4k&JC9@SYQDjlkA +UqE&rXqZ22&mUIk[lrSYr1[UcC6rTrIl9fpVTkFmXCdh(c@p-[6kfB-BqqEAhrqE +GEacil`2rX[8l%rrhQ9[$JhdRacmrI-*laIP4rqmG)d1rL2GFq-1ahaEqZiIq5rC +rHr*kjX%M'9Q"D2M3T@[hjKINjHEmF9*LkKFThd[iNe2rpIbI[r*RrU22*UIGZ2Q +Yp"pIrZNlrr&(rljZaH*A&rl`YApiqerIr1G&rq'&rr6mIelbMmrpRjGIR2Aah1p +qfMcRrlGmXQA(cJmDrPrpYfhrklhrmH&Ilrr"(ApjcqrZqUXlrqIG2erck"2rZr' +a9Bq[I(VeVcIqDY0[0[pb`pmhrHhk[qMimL0IlhcJ`DI@VY[pe6eIfEHhUleYHqX +rECXhHfP&QB6Ih"4Jc#rbY+`[Z-1AC46JUR-#YXYjC%U+r6c1+I8Z3,U@-kRYILM +B+BV-U%(&b-0QAU5$*p3ifpj8mc9P'DYehL$3K3PLil*3JKVYlEPj'`fd!(H)31* +cJ8bR9,cr'QBkl$bD24+0X8N"fHB0+#8c#'V,1Had(Sek&TaJP0*&!kDf$Se!J&G +E$rI$P'"QAM`CVMRqJZJTY3`,DE8p0q!+FH`q,$Ja0'+L"DX-#jjd,IM'h8!f2'e +dESTbhSbUXM'"b($PI8Y%!F`irV*8*A8KkVcRJC`0U[Um4VJ**YJA2'iL!4311R$ +3"I64VAGU@E8Sap%b'NlCr+a'Nk+65fMb!)lV(FhYP94!m"N-l69XpS"8#0('fmZ +'4V"Y+`kfBYY1C*Ff$2I4J3[YM+ULKm[S-'4pQ245ie%6R'3mSD6"PU0NH)KH*#) +N*C+lTh@M-fq*!Gh-)A3cEih$YRZf4$IceZ$R8`1kQ@0%0ccd@8Bhk++jK8mHaiS +VZqGeA&NEmTRkdINS0$a[e,'LarrErH2UrQ(e,V[)ZMCf1eC!R%+Z(-CME$'6Q#* +N1-3PXDc&HQ)Re0V`3J*`"1*ihRk(EFpL5K"J("GL0MjH4%+AmUe%@$%"&JFM0@Y +'QK56[ENVJ6[#-f&Lf21'T[4$CYKl$YZk0B*K%$V1Hml3P0jYa6!D'QH'-8KmGPi +%L1"#K%JJdc9E&!"bjAH*!X#aI"Q*I`'bh*!!jZ@QDJIcY-'Na%$HT3a04af",!d +UAH"J`EN3b-Ri55hM8#$MhX3[#V5#5iN&"e-c$Rf(G-XFU*GC"e-2DTF50G(`RK- +CXEVhQP$hrV%%GDmH5'ZI%,k`dZGl!HV9C9,!TY004!j5ldl+"&3fRa1QP+'4U*I +&Ebl'(p+9Sl8A[!A)Z&)j3JD[eJ6MEaCAMTlD*!(9S2$ja$,Gh)AhIRB)hU)a+K5 +15&I48i'NA#dh#DT+q'$UTC5!GZ5,D$53!-4D"cLMpA%jN!"e*3mXkf'Z'f9fT6, +YbSL4JeBUTjQBBNN(N!!3!c@T@#jr8bL@eC%85hEHC-85L01c2KdSXV["If38c*j +5-6P9ekUceqL+4"!c"Y$3ZM5ldR$-!K8)q`6`H`MiFmSBl'2Kd+rRUQkpbqekUK2 +(dA*fd[*6J8`D1@@Ch6dSB0)Bd(M-ij&ZVFD(ZK9J6i)b6$*KQ#31*EEEPTaPdUV +UEYK*a",MVTE9%mhU0@cKlUkm*X!+er6LZE&r3'KM-NeFdD'�RUkUF!eHF%U(j +5!UJf-DL'l&8X9R-$E%hDi,V(G`Q!C6(2kA%$Z+C&!0CV1V!q--XD@*HR#Q#pA"a +B(jL*$+a')-A#h6U`QZm6Z)j`$Sm!V`m$B"rI94aJDreR"V!!43q$DeVBV)AUNZe +%CTmeU3'i(P50F)1[&6!bBFVQ%$2JkKpb)I3)i1TM8(X@6p%"&#*V!YLL$b-!0I2 +$-M6HeLm3PpA6#,3bc@3Ui8&Q+2,,h!1Y`,(i``&m@`33rR9N)*`(mb%8'cM$QS4 +)cT4f5PNqkS-E++SaC@Zem&L$$J3K8@Y1%1+K9QUJ!%$0lEYBrDiQ!r6kp'rl-fY +NdU6)(B@lG-hY2Ki8qVCd+QeGlhG0&+e(0C6C+P4i1AiMGS-@+EM-$5Y8&6L5IM3 +diR+-P3,3db"f+14Q1@F0LcN8dLUEdZ&-'l[b!h2PMV6+0%)'jXRqd#GTTmG$)I0 +YpaC8P$%,35TP1FYB+14-#dm2VP8KcmqZl*qZr14Sj9(D6P016rDU(Ak,kNQ,VRq +MMbBbAlFQYed+-'fak1#$%01"YHd3TMqHB%QR2c#5@Y!elHkEJU$"55bhA#r5m6p +FG!28kp%`!p%IG4D1p)A&j,BUR`6kf$-#k#1,kb[X954Q!J(+*0Kk&J(0"R8d#m4 +A6Fl(%Q@Dh-a")aJ,pe*6',jSYd*((RBES+S0"V$D,m$Ud4,!DU!SQqB2ZpQdE($ +GbKUkpXUD-f*6Ip%0c+CGV+k*V'KNPUp3-QYqH@R-8UiV-F[F9mihC(c+B%YB*-H +&GSf&MR,JZ''JN@9M"PBp)9MeQa*B9@GJ9E8%SCATP[5cE,64R)8M%4Kb93k5Pe4 +lk*,C)j'[@!aPa3`S5cbkf""2FD6'cb+5E6U$Cfh5Re@cZV4Rh5kkm$Ia0'QmHVU +QC1-9U`+-fV!K0XAU!,D0!E@C8kLDTQEX%TUKMT!!k5"FIArDJ)SR0p`)0*QV5+J +8-cEVQ`9*(bL"T%e&J"qU1Kk+M+ijKdTJ(B@CGFeGqHFL+"Z#9TbqT%)UK-j+5(X +TA"PIiEUbKkrX,DLr$0,PQ9LNhAj)2VAp5)0rD#4V9*UjfV2&m6%,+V+aBT'!bQm +Z`99jhiYpah()KV#b"$Da922@)GjU8p0&Tk)'L`6--CrK83-4(M91M`RXdUVLIVX +mHSD&qj4mhq)P%am-!aU*rY[(d+%P8hXj1b(SC'-A"*%e6CEd`K'AUE4X2CjD*8% +Bk"!#prBAZ)VG2"+*YbrQlR%X(%e4-$bdb80aLHIL!)2S"%3*!f`UT1!l)RM6IB4 +"U,$9h(l+U8J&#BH%5(mp1cG8K@2ZSDRC`Sf"Rr'fjXb'3Q8!K&,-iqdYCf)H9r5 +3!,NZ`*)A0`R`DhHbmFM-'BX2TUX@NiX1QfADhbZ8KN*EX*p9M6(ATLc0DNKcH`- +C%LB8)jkhLB('Lj!!SCJD@#d@cQ'LMCX9XKR-Eh#BU1+Mpb@JKHA%T4!e6ZBkGZa +!ma`M80[`#K9jQMX-D$dQf0([UZJP!%j@MZ0U!aqXL3*YC6T*h@er$mYqY'+0jP[ +[EdURrf[6'p-l+1-cF&1hA8faQe$rLVZ,$p01VTK&+0"SNVG#rmhYQ`b9H9M8BaE +)"p@)#rRLDkQ5qkSE@l$S%DpNFBQ2mRJ6Xh8(MMlZL*!!5E#@$mTr!dF)ETk9UT! +!"*VZIr91l5A$0$rZm-p`pQdI-!e"f3aY[-(&*jaeR!%NL$bKHD"@SM,JQ$,9e0r +-J,Qd2[R)0TL#UhM!5J(q6A"dR5fRddLTQmmL*RQY!3cbM#hrmSqZl$fN["G)N8- +&H3j0$`eqj4#EVV)9ZS3KEf*-d48UlT!!bp0@D4Kc,h8R#erNCF8NQ1#2cm0&85e +$KH53!(KiXZaik3)fL5*4j5Jf6D*+2bVLVbK-lr&(@dXJeb-'e2kJ31hE)k2ffDT +iil2k()h2U,[a)B86QkDKF&kP6"%H[Idq1HBB"*)!qHb43+HXLPP-35RBdLSIYk1 +fK-GjG+F29+H+*8%`jh`fM'ClpGA'PPi9&iTYpGG8d+GDRJdm%PQ9hCikZ1ihD@L ++jV+6M3Fr[T)E,4l+cIhf)k8e@RKfMAMq@b8mIp*!'Q6f[IQk!Z!p&-,"GM5JQjI +*EQV)3`8SJMjai)YS8YY+`miDKU2J)a8aj#0dX[f`E'lEpj@Z)VT8P9$-4DcEEQ9 +[EiTlk5VUcXQ1QH(T-&ea4LXhLU6f*NRND@"4Yf$4k4*BP%2+25jc33S'd*K8k!) +!Z4bD#GX[fec,-hLhbJA9KBK-HTFQY+3cQRe3-@0m5K4$92a9GHRXN92"pI-D#pT +'#dGZ+45!P2I0REcY$LJ4J,PrAmZNZmQSQ+8h93L'50&'e5-P#k4SNqRVj!-+&B6 +4C9&,C[V#E&3Jjp@G1F'jF96N4a)+5Pl&YTc+ZI%$Ym2p+-`b#%DbGG2@aMS`Z19 +@P6"Z`@e5qj!!h3&Sf,(LjUf0j53FZ696X8eHBEQ$ZpklD)[Hj'8Fc#2TD'j1)%q +,AXTRmFGK*'!#apPp%(6mrQ"'FF&(aG[I0'YXEYEBFQSSbBkj0[[%,Ib6IqLL15% +h`pid-1`pCPL$`rEV6$I$'U6,jHdIZ4PQXf)BKUpH6`b65c&"@J`%HGZ`J)dAf)) +&P(Z",IKCK!9Qh!Xd@#f!iDZI&34TN35TrC!!#,,dP3J%bB$)+693M#6bp1%3T@4 +b2rc*bFKQ)$JZ'(U""5FTHKB+I8KC#0RRl31ha9'Gmb5'p%Yc[C["$Pd3q26c1S0 +C'!1hdZmri@E`8(&Ki026a'#"mQ2&@CUIQdJA*SPpXEY6k'&HIDeqG95*mC60KTJ +Z"T'VT`(U46jAE()LQCZJXk*U*b-6-ZU`fVr["B"C2(Dbl&I-M,8'CX4e&i59#ph +-)"2HEVK-hq&QaZ(LEJJV,a)c5*Me'"j##CdKS(5@G&PamB!1(bB,0KX8GJm,BT4 +UFLEMcbCYiXr`qB3kBSJr`i%(EM"Fm"lpJSr[j!Y1P"d99hc3BIY*8q6Xa"[HT5X +5Fh@f9MjCM+h2bFc,VZEkJV1%BjlYmA%h3qN$0%eB,XQph*Y@bf(iUVZ-$'8aUa[ +%i'SXBBVPaj+PhdZkP"Ti'#cP#35GrQkQ*$'pZe'e"5[CrE#i#2k`R[9@QDa&m&r +G*d6``m@ch@1I-Q[NTc*L4VF9khafEYH9SS*cU",63U@`Pk"5e,R9j6P5D5LL)1` +U@ER9q)-I,AA(B'BeU$%68$E+#CL%iR(4Z!%IBUR8$bE*r,fIPrFE*TMd&Xa1)$' +`R+cXb5(aF"`-8a!0AF'1IS6'$D%KZ3e#[))Gf53L0`3c4E!5KA`%Bd-Z9N`+9Mc +[ZMC2Na!NN@#PVKDV(#K+E55qB9HqL-S`$4!#ZC4c+--jJM"rAJ*K@U`8me(Z"-Q +ZZkffDA$G,l1&)%i+6$f4(d6$K*'Nka`2HN8mk+FP2'LrHh*bDr+43aX5k+i*XdM +FF&`*NDc-+Vd)$C!!fi!)KGbK!B5Z'N)qGqJ#3L&$b1-1jD#cq##68BBdGqJGK"S +0S@&hD"C#$C+J(2+l3kK-8l')36L)6p8e#G0D"bI-UT-5B-$c%9L,5M0#3Ek(&15 ++bk)iLi[R4I%G,ZD*BJiA-dAa!KIMSMM!aA&4l1AL!4CdN!"CF8bShj-44IhlK0& +T5R9'3fLi1pcLm&%5KmG)a&pp"#kiNpqTV((-3e8N$I8l#p84G9kpTPV8'Y8CV&3 +AFmV`LDqQ62$T,(fF#TqKibP9F)#&3Nq3!0YBF)b$PHjJ,`HhF0#6%a46e+!jkA8 +piS+I!ZafYKDK!F2cA+&9#&e`KBCFSAU%FPbK*%rM8AG`%B,[')+D)HK(F*BK11` +1CL&dMbY83bc5&bb1d)GeK,lQQ-%edZ!84`U'08,rq@C#k**!1LT2r*1#)lRjK-b +&$i@VqQaZdZm[(2jpEPBJIq[@F#"9RB(lJdZN#85MXC)BJmV83H6AUP!PB%Se'89 +b"-T1J2D64M3YM)p-q)k8i2hdSFC1L)DDBQN%!0%DQ"-l-MeFV)ckY+T'2jVZMY9 +XkPkDlKU+jHq8`m,lBF$TK,'c)k)*[b0+MF9FeD4rFXS+!EdM%0#rPS#!0KDT6R5 +'$43D0XpT0PRFPkeZ*iIb(Rp5m'mr2MXSK5&`FL[A3MeT%#Ve'Jbd%!Fd*Urfba! +8Jikc*pN4)))3CmHEiUS[4VlU8S1!#5KmS@j``CpZqR3I'DK*Y2APG,X5MUmqGkE +(3dS@eG"N`R3q59F[,-@m3*rYkMFMDhL!('-`-2LQb3J6l$Q+UmHQ1k%8Fb(Dj4* +JNe"#Hd2&'Mp@RXq`6EXNKA#$Hf)+!FpMG44Zq9KeCmcdI3`&%!1Qhh"2Zdal#aq +i5MIjHC*rjLRN)Sqi40bN'KIXdX9l,4$$&JK`-V"iPQ$a"b@`1*-'JL&h5$&+4,$ +UTJ'P#IEFKM&EcBE"G4Y#T"U8C"+MX$#*h9Pb3mc)"3+GYPkhHE'jlD)dY,G9'i3 +m8-lE3XCRPe4`Q44%ia*MX@U&D&bDfcbPQT&Eb4a+h3AaQ*NKqVKLUqJLd0'dQqf +kiE5jlE$ZJ#l9"6U@(G5fCm8R0kQ3!),+0l*)emZKETX)cA"SV3MeXf&P01aP!`i +GCC'Jf!A`,26S&-(#Fdc8'kehZfALqYNM,RGjq9bGa@,)biBR2frej$F05`eE,C9 +Hj-N,5hRbMmiaNG@6fbX-6qE+N!#kD*NfNXQXl9hh*(#pD$2c4iBSF*i$RE,jiN# +V+-6&Jj9k6aaGdiBq@38d4T99C2GZYYK%L5I&jYRZcGfSJ#N2p+fp*3k149HbfkA +mE1NH-K"88MH9+NA[%3rBBRMHTlc0%ldU$TiXm[3B('qpaLUe1Q1FVj+UaZkk,YC +d'9Lcam#D2BCV@Mpj0%`I1*RY[K*AC2,H5f+iY[UL`k1VqPlpr#NJE+F+@5j(HKJ +[HhF2ZF()*c6#&@D2Um+9HUK)j6G$a5jCP8Smi"kBD0%`R"dL9-6+1-5VE4r'Aq8 +#)3VkU*QQ2b-I04UfEVf8KiV0UGDeEaj'9E@0HV9$V[*3X%&8aYaHimeA)5&%EYk +Z6L"j(&9b66mPN3+Cl0Uf-HXh#j*d%EM$$%XNfXJ$G[1!MB,"A3CQVjCJ%Hi6"jf +kFE*Y[6MDA'4iGh49*MX!,YdXM,404DSP9ZK%`N@kp3U3!0YV4)A+#LKFh+dFI%T +F+qBLYID4l"LDVNG%aF+m5p9HZ5SHJrB3QIEbZ'Y(&mENq$!d(AJN+EHA'cE%aDA +*R134Ka)FjdZKF&Ypcq)L'dDMMGC,'*q)4V*"0*Cr@8*MQ5iEb`dcT6H@'fE1V,' +mqc`'ee-P*kK6adTS-UId39"AMVNU20fpmPb1IVfZ+U8KhV,0T1T4P3M9KXEdbFJ +8RA[e92#"CUh@S%3GSq*U2hhN'00@ZC`ij5GYp)P6b)PeV+pP3Nq%4-)R%M'4m)K +%YdL-LN6[8()XQ4hG'YJ%U05G@ZJAI[i)UDrHMkrS,-*3-i6k9#N'Qq)Y-H8q#KB +jULab9&AN+&6NU,E)88f4SqAkd9!b",'G!99fU#%YDl6SmpK-hiRLC&pG5K$1#j- +8d[jQBRCMbm6XirKXT9NrI(G#i9#piCqJMlAciI6RfYFQ3Sh%bXp2qbGmBhVJ-!+ +q4Q,YB34L-hVJ"!+a4Q,e#33m#c!jM0!83RC(d00)l,q#B$F(@d@`&F(Z4L)*"8F +jf#@#A3L10K+C+#L)T&S,m&%I5Djm%frB)cEX`3Dq(Qm!#`440dQL"Xr2K(la,8R +3i$9L@5mBKSSSa1E*k@X!YmPXp9NbXhXbhT+Ya+!JZF%B"dl63(p[mB'9@Y@&-aP +BT98G1j1")DfUm%`'eQT9$jh*`"UY+V[dJ992qQN`"NP3LcJ-S2HYJ+VBRfPa$eC +@,,cTBQ%mHD`+J,KDSb$3TfNb"KR(+5+)3k[P+MapU-)cc3B#fpi+9TQ!*0U2#3@ +,MqR6',5B9K1rL@8XEl8-`"HB*M90JY!hE'Q",9U0dG8!b(103++r+J'*cV*'JVp +,'&chpmI1M36P)'XNq,['qiS%IpG@1K,m#bXNf1L2K!6RZC(Jhc%#P)D14ZV-%4+ +F"b6B-SFqS[T[*aUF*p%J2A&C4%5)81#4qiS+c6TU'hHM`R&#K9BS8U*#3T%a+a3 +T85'K5)m9LT4Sm)3E$4T4C(%dD%54NG(J!5XdD%5E*D$"%l[R%E+F0%P3Q6bHJqq +QKd65Th`L'9-aNI3SMdKfFk815SkU8C(X9EdRRJ)3kdXmPi)2TK-*%VMbk##@Xdr +f+qQSY0e#"r'@IMb*XL'6CC@SAX(1EpZ[QK3l'A*K5P(e#lR9A'@UVBI)L"A'$E6 +T2&A0!R,ikKS*X""iH8@93%)S9(f2%FPAGQ&+N!#!XehcpP'HPKF`+d)RH+lP5cG +m!NaSJB$Sf[(dDD,+UK'aE"+)jHXP)*EkSXil6emHA0INXk4r3hlST84K%!f5+1A +TmqF`$A5+Cl3ERq&FX'-HGlim#,AKQP-rJ3Kaalc#%IQiXKD!cTqHl$kC2Vjpm!q +$IB1[$rp`q)'qGF11iH[$+mEI',iaI',BfcFmr-A`*bGIke[50cEX81)I!!!VaN& +%3e)$!("H%&809$B5!$&LlN3hZjY`'aGC3XM*f##AX#a,L%NDV%e"i'jLG&hmLmX +Q5XUal1EjpQkLHEkG*-E!Dh%ecfG3XBN"%3V@8SH+L%I!j`X@D#SYjBK[al(8@SC +5X5TLe@(%imR3(2IlrIrIZmm['j1)c2c0qmllA"e'05-L%`%4!!%"%I!3)1ErdD* +k,"CmUERP&%MaUh*)4El`1lLN-"%,NB(i0i3RED`c9ZX4%$6&[12"QZ4ZbAG[Y3R +"`4dhDfVYefUX0QASA5NjUFVEM5C)%@r$Kj+d1iKJXF8#Cq!GLq9E,H`L8D)YY49 +U8p)lUPVi"#i0mFXBZr5#&&"6CUI!cH+6LVC*AKCX5MVhUY9DNQke2MMmH9Tk5@p +QGTUeY$"0YcfINj1PYEYV8fMT(d')DKbU8$qrRda+`pjjUNX1AGd[U-2I2@p`)db +lAUhhYb&BVFHPG(#E*G&6S'Vmd#D64p++YJ@IJS13!1I*UFa5'0N%3TVR488P'QQ +jhU4D#KMRd8[c(ICYcPfSd*E5eRrC9,60HI+M"e6*Q8+Q!rk`aBZ$a$Df+"`D`iq +'(aGq$2KTadm6IMU-9T19f*fFQC[TJ&dlq&A)Tb%HST&XArdfk0'MB54AX#ljGE( +LbF0UFfdaArLkI@aabk+,BbKR#$DQIR49MDNa%ai'Be+2VBT3hU(4)J,[@+f&DI& +90&TY1V%RqeaZZUl%RPkZ22rHGkh@M1bb`JbG062(ErfH[2rcB@YbCQi3c`IDD0e +ZklQaC(-dRCa+*-KlF('A@1r*@GcVH3QqlL92cV*Vm,UGQNkreJjc%8H'jpYSR-9 +G")#BmLUIFNQHFSq!emN1TlbU6,Q(6lNM2U8+Ve-F6VQ(69Rb1%eC8NG68QHaC5d +j6&0kIa8jCFRMbT4(qC3UH3SYDmNDKe-H9DCBq*4Tm5PB9UAUF)U&Ql81[TeRqr6 +Y2'p!90d6ZLE0)AGd&RkZ!8QJJV+88-I"+iA%&'qQBZeXim"9Z@25(#q+c4cm6!8 +CS!Rc#A&m`QkDF2mcS41f6TUc!*A!C2`X!qM5K0F*EAb#Urq%m+3j0,!mEp*3@Dl +N%`VL%h`1*hKVFZDS(hV8imV,!RU4F"&HTMC#@1,6GXY*N!$J1XY*q0UUT"ldR+4 +"E'*M3*P5aDE2lF"fTej$KE'4(lf2QSXIcFRA3bFMMjiVBX,1#Jf9paem!QmX2U' +6*[cR!V-*dc""AkmGh'jCabFBUDRiK$D(%pCLJUY11lM$FKHIS-8Rh14`JPL6-lG +$BBCHTM&8c*fQS1)d8*((8C%A4m98S1)dSB*2@8Y6B,JT3%8"-*!!(UZaef5#M!r +'(djfm("+riG,$MYiZ+Er`dSeqK$XH-K-)&H,MeLYC83J2imJN!$(Yi*XEQG%%QD +AP(KPGRFb`"T1h#T2cK`[*ib9Z&`3[kaLPe4aiC81cP)e(+dP$5S2[IaK,1,K!JF +2Ud)IHR,QLY3FV9QiR"DrA-XZfC5j(If2Qb[f&cehQS1(Dd-I%T+S%SfX3)e@"@% +PI5%-S9I$hKCBEi'f0`A94KHm)RJm6CGHHNk-%q$[B(*QQ9A-c0$4ml-b)6jHPP9 +BENd[,ma-6m0MkhElf3c(`SI'+Vc-SI!b%PiQ#kmP!`d%HV,8$PBKFp'Hc*c5FcT +Cm[([-FPTkH@k`T`MVeZZQ)kbDS8G`iC*JHqN[C4EGLa5C63VJTj+bmSqQe1Bqp+ +a5L0K8,L`-((RFNYdj@*'pYPV)3k$LNB+RpEZ9JUH2QR`U1VUX9L+YSPY4h'B-m9 +i9G852S-KT,M4Kk%CDm4RcPh,Sk1-q%X,bkk+KCNCab,ZV*QiTl2cMadVCkmGH!d +-Z8F#Vl'!aF#L&A6ka`i8I3Tc""3Q(,%B#JeL,0rLG"&)f!!5--B85f-(LM'c-3D +3!"KB@#BI,T2jMJqAZ4RjSYSd1!@'!3p-9pTm1-BCE6XQ@[+FX4d6982&3pN904I +9GQQ,e&NZcEqXLceFjp`&deK+cBq+eb8(a,YV`[m$!rBrr16[Q!Vh`T!![E1e!d, +E[jUL0T8Bi!+efl#KYEY!EAV)f3T(d9H,UNK"Afr5S&keEr0E+J0"9c+QfdC*51l +(8LHUYPl'FN'DreaklV(`DqmKUXKBEJTPf3@@0FFXkiRP,GLN5E'"@2l$Vri!Kq8 +9Q@@"YS0K9mNZ-+b"B@VqKjb'1+2e"#C&f`K3JX@Q,EDCVGfFhA(1ESX8N`hYJDF +,dS+kBf3hAJ@JJ,Vm&LMGEB*V3f*4ZHQZqV26MN8Zqq$l)Xh20+mbHl2pZYbFl", +G3%GITD1c4I&BMXi`1qhl*+`NXrb)Lh!-hT+fXCVq*PE2UPi9),1X!e#ADMYK)+P +3fiQ`jIDD1KGdriD!q`B#EZj#8(-rG63+i06Jl3RBG,5lpb&R-BbF)D$GUqlEjYT +TX85!pZD4J2B4KK)pCim!fRfcUbGfBf"@Bki&f)dYk2l$$Ep4!$[+EKbiA36FB&B +lDJED4`(D9#d5D#I-2"S+fTY(!YTM'ML0(,3(PRYMJrE!4amED*qLkSH'Y-%DUS, +Ye8A9T(*D8dd!B,p8G)Q&U2#9b,mfdXG`8c4kJ@2MiYXIV+QQk8Bl#4KF#"AACqJ +"-FBq3"@rLcQdkP3%BBiMA*,)(SaRI*06Q@!jpGl"bJ4kc0f%q5B2G!bPH*ABN66 +BU[)"ZEbPjIiHYCH%!kaUiP9LPZ+c4!ad-aRkMN6Q4Na)4SDm93Ii9eX8HD[DpK[ +bpR$Nl@'S8GA(PjXKMaHR514pGm6)1d*"'M'SQL([!%0H+1SLJHjfQi+i',di3P` +8EIpl35hlaJ+eG!Uck3NXS,B9RSLIC@UcAKXbJ2bHf[%he@fD5D%M+GPNJ,+@AKd +@E3Hce103ND#[$8%bdEr1A')iV-Re"QNlhjE#99a2199eNE6pQbaef2*2IUKA&GG +CrZP+i$dP-0,`#!+F-%p+2Ac,2'A,2,l&&pq5,b9,GLaXZ%llaQljk6HjPTpD&N2 +*C$'TpRT9X9ADJ3mqp6IckCpH#5#`-Qki,#8IY#1BCHI#(mDdKbec%"5CLJHI@qC +LF!IP!6jPlZB!`Zp+Z!A08mR#[M"PI+`f5`PJe3LM+(fYJAVi&U$Uhi'8PD5f%'e +F9&`[qbd`JVk-`E@AXrr[cL%TJ4CHS8PG@1,EbK,IaK+l,09BBJ*Ic")XC3NTQ8( +*1,U-@8V`'FFK#,,!Q2$046#b9K'bpNVJrM"#j1Y9SpM%2pV%2pKd*4#HSJjMZ*K +ZZ)`22VHXjapraKPHccGpaKQ'UKiD[)!'PZ&*Yfk'L61["SALejAXNN,Q4G9N&Jj +2@MRGBkIQ+0KNJqX!P@J+81KabG@ZkI9Z2G['(Q$Vbd8m4)R,+a6![#"3`"fEjT- +S-$BI30pa-"P'AQUQC8ScIB&&IP(HfA)CLLQ[L"9Ba,+RXp4'bhb%YZDlH@J,CTT +LD5H-3`4k-q1JYd81,J9kaBacD9N$PD!qh0QaN3q&l$iA*4qVRVZ@j10'*EEC0aD +a[Bh34FJK4pYc8ADbSmbp["l-lHA-lC@C1hc5j)'*T6k5(3c[kN0**CQhZI(MYUM +a!`3c('GeHi362rEBNd-A(TeGZ$*QIR0"-a@UB0f,UM*`0T4eH!TJ%JXC,0I$`Id +i!(15qm9QEkIS,P#p-E%B,($c8ZC1,cRBlRc9ki2jLP5LSFiG+q$,rRjS#'VXUik +DMYjVP%e(G9#3!11,hH9[JQ*NRGV8dJ"bL)'I+6$dQ4S$D9dBJYDQT-%+$(l0$8V +j4f"8Vj+c5icQ0i1CP,KS[pp!K`9V[1LH&Hc`MQBdX3E[fHM&)@*dkrDKhh(6Xi+ +FUa1p!4UZK`JcQTR8fK@c@K--JB)*!r0hGkJBQ,YBmEDD$D((MX-4$+#MjQm&dBC +)4*TN4+k-)V,#aaY$mei)'VcGZ5(0d1`kIb3N#hl,1bf%j220hVCJD22GjDT$piG +f-3DK4SlU!plZM%-4U!kGX)')[0UH$2HII[B%JT+cTJ#G$JUDm8&VZFDVQ%1bil@ +QfVQV`1f-0N8Ta,YI9'YM8QF00d6%CL2m-A$6$4qTkH5*&fH55mHQ&'f,NqP--iG +Nl!ejE1l)"VP*HCACKQ+TZPF#U82"[AM8,YVMVZ-`#+q'(cI[j[*a[,(DN`C4BAk +-+R%G+[SU)-1J#(S%9@iM5(dlIJai%A$4a-h&!Si)Bp$3!!-[&(I9Y8hYF%b0Kf+ +H8Fp21#K`deV13Lq+@8lX[-9C,hfYkT-r8r8)iKLNUkS4i6QMB440fqPd`9$1$9" +LKReER9Tr%`a1L9K-JdKN"SCb3m`@%(FHa''@kpmKF"XQ`"YF+QQSe+qAYJ`8)X) +f!fhl[d!&XG5md$B6BYSYed"-ZdkeH2Q@L6!P+T[JSV[)*)#+qPi-*5CrNk[HDPQ +058E,-P6LUcd"6`XDIK9RNMUU4GP%ja&mG*Y6S1SG(8IdbCXiZdhd!!B4Sff6DLb +HCeR"Kb`Vi,icaHC9-ZZBIKH*J!,(E9!(TN(A8Sk#0MjPY5h`Q,)d$*jSH91*+I9 +8C#'QlJ*+-Gi3,FB`T4ZF*9,2H`DZTX+,fT1EQ@)m+I4c9BNKMZ*I,9iI4r%0(-@ +rNRU1L1)EiLM1XR9c"%q&N!"fAC@#hUPX!`DB2fFS$TVHUe0[09[+,,k8@A`TEAb +JqA-`qR0He4MB40kP,`DcM5YHi"ih$kH2[F4PUR)Pb44-6+35K+D@GR1d&e%a%[8 +Fe'XSD-JI$`&Bq4"Hea+[4[#aXd)TD,&5fYD4[*ik%b(3f%BI',S9!9$ji1&S&S` +jh#q-2+,9KeDF[-M[3j(Aa,eMVq+$[+#VXd1*R&,SBmU&TPbi5(L`,Li-)AFSIPV +HSL%"%c16@!@SSKXA"9qPhFi#)TLF-"&5,R*8'SEHCBhqc#S63R016b6ikKe8jGj +aG1Pj&i%b2R'SfU4b-r)Z@95iQ%6&QiLK@"NdRcXff'#$jMN1L'Xj4h8@4h8T32T +RF@3EcC%0S&l!JAS"%-j!qQF!kCmaY,[eBd%lS4"&5V2F&`d"JU$F4iJ'39[*NAV +)1mpb(a'(pe3CZD3F"[4Qp5-1'a8%ciNL'!4RSf8UK'c-PSJa444ea9936Z)idTY +#0LM)CdGa4PFb*$8R`5Qper*V$M*Umf'PBSj4efU6jMI-VaDeMbj#6l-a2fEVMV- +qV4IQIFXX1"beK!+`55mF$E`3cB0)AZfS!HI&rTA-Lp#%#+PNGXQ9$%G9#YYFXVP +S@leD3BA5C4J&BQ1@dlCZ8P,DHKV(%k,cd,(iY"V$9ai8YlB`NZ#&d'#jhl!iS'X +!)+1V5AB*d$E9XXcT!4K5PaS&9B`S%,+#3rbBFAl-0ECZ[-E#er5U8)qJJa*aa$A +mS%3FY)-cDD4U!iKFTQ[MKj'#mXSiU6[Fch3f3S"@9A,NT%`dacd8RQCLqaRh4La +@*U#XQ!aH$f)3'-(`1iBT5A`Bf"Sa"+32M[,"XPFHG'ApL9b3!+$le9Y3D!BFB%X +2a%PXEeP'GTVZ@!R!CYN0K#-mZmB,4H8"P13!a+5+`e6cZ!,H'*Ac0NH,BAM5,a1 +B8dl1l`GFC9!*DqVjK9i9Z+)#$F#'U+-b("!Ya"QGTMLMTf9RP!Z+1U5RQ80+Mp( +9fp`TEH),ZLqk)(iB(&1Qi+)iTcf1h2!aU%@`6ljVhEje5jFk0KIllaVBHSblf)r +*,[C6cQ[KBMmi4KGlK#SB4hDaZG*T#2"6'J#,CGpqGl(l8['iX9eXFdCl96+kl6Z +bLfd2GE'heZeA&pXqBKGl[jLSi#+-cF9H25BAqe#)Lhh!(-P3XMrT%KLDqcRC'mf +FE(ZSNkdJ1h6#r(j1GTfc%8lfd3JR@qrBZ,NQB1Cb1dISFMFHU5QM,VGH--dFSF1 +p[mer6d3-#M95kh'U2Lp3E!X@FCIE&KqU(Bp`ZGmbFlRILR#jC9'UQG0YMc[GGKc +b)!C8Fa5RHf%[GlUTHr"qFER[jLjh'eq)Zc&'S#@@FTG`)AHkNf5R1l6TdDNJel+ +`EaFmG0+X!,Q$M''h)B'jj0-8PlaHF4UR1CVNbV9BiJlk2H5J2ieLTMMS8lLLk1S +3phc+!1lj&$2hI-S!l[Q8!Ghc2r%"ljm8G-ASB%+BiU$IJf%qPYGmJ$(CA0p['(j ++)302Q,RSL*T,28r5iDGB8He5j@,1(@2@)0Ga&ce*GY(l0FKeI6[X!c@)'NKJ,[a +%lX+Vk-R''Q5LSdRNdV0'#4V4"FGPY[$CmB@(1[3-DDeXSUK*H&99#R)dMXLaleY +*,L)p!R2XfH&C9&c&4PkJ+P#!I(l,SS$bi4DjD)3iq#EqdA$Fa@GEDrD!B('9#ql +N0hE65j`K5RVJNp-LM-(9ld1"N!"A,*,LkYZ#,h!(Y'MX3ifJ3Q$8G@0fpKY$RIf +RN!"[LkYFbS)SZ+14SMSTSj!!UVVc2"&VjJ6`64NF`9'(AcTk*)Grp8!1rijC4md +FrZd**)UM@bCA2MQC3amZIepQXNT(j0epL5-pk[6I(NGlMB0+q6kP8QC!IcZ!rRB +Cr@jKM%krR6Z*Gm5VNK53!+Nl'XRP2mR45Llr(4%Z[i5M9cYdq9FT++k-F2PAFCG +rPCR,[dT'1SPcl2*[6f"(83'fV*D4e#bLZpeUbcV&k8q3!*eqNlEa"2e02,'JHP8 +hZNM-3J#JQ`F!YL!!i)i'!#6IV%"iQNC"J,[Jq0FT3B#l3S-!5+1bMP@$kVJcppS +(!4T(iCMMB"B+B)%!VDp!3$jhcUmiFhNJ)%X*"'`*$36XQ-8'`$`3X*dI04jbe$8 +X'+#0*"L`R#UC%33$qP4[MJ`'K",h-3B'aU#kIH6!3"p1Ja`BX-Z"!@AB+JF'l$G +DB+![-K%5'2MPri(!`-VAqJJ-f11"!9YSB%"aSDFT,[4TfBAH,i'""mFH'1M62"m +5''"J3mVG81&@3UUK4Eb!LRJ&L[KkTBLMU#$F,"Ia&,Q)Qe5pca66qkJ+9kS*bBZ +"3,!*A850FJMI4Y9l5#8LJ`Hd"%Uq0h*q5Qmd&LJBF)!cd0U2J@M3Hbc,(cK+%er +qJ9kNaY5mReBfL#Qf6bZ,[XkT,+TX-"fXE*!!GZVYaLf5Eci![Z3!8eTYN!!NhiV +U'R[iIfQUb@0-PP*35&@e*GTjeFJkVaUJK,25b!Y,H0++)@1eY00N0cqQ(XH!1,I +0KjZRDrANV,a2DV-&i$bb$UpN(R)a3MlkP03T(kchQ,ESNb8AMM%PVe9MBNcDiR3 +2APqKkE[3LDqBGGj63"ZGN[CY!mTM*R6UVM8iBS*emHeJJCIY9ZXj%!ZaX%bA,RF +l,8YrbDqM4VGDkB&jD%M"m6#+49Bf+%djqRrf3qq-%-CR!,dc4S$HMrZKei9`#3H +Hj)H4YS+K0Z))S(E'rmG3qrrh4bhJ%Vjf@AikB",+P#2$X$Q+*i3JB!*32'%rSIL +e1)SMMJ#+*rbRK1+cai4L*03N&)2!)C'9bqrk1&$'$)$A82)8$`p"8`T8T&0m%cm +'6iDUVkf29bbZT-%Q*%LM,LJ8U!8*I%B*1VAK4h2fFQ%EcMFM)HMT-*6NS4JiJ$2 +VG#'-`K24TPjIrb1%8KZb5k$HHGUBS4TE(r*dHflS6hlc+6!5*Em'QIc#4)XP)6# +5`SJVZI`9UUQcJMQ(4'4hf8lBaLXEFTEc8*NKMZ4RcTCRTZZ'Mm''bj+16*%6K*e +AmjYI9&dqM+B4`0[+%@#jQ44Akc5rLea8EPj6(9FXq@1X@23U95ZQ'$HBXUDECjX +TGGT'#Ce[MQZ8SR9+l8hiZKNr%fYG(Rq@kVQ+C[`khSb'IXeS3[2Y8TUahGN%`AZ +9jTP)cH0XJe(`Y19QBJrTeSCjC9CRkN5DD4*X61kQlBE'AT98,'T9X`SZaGXYVZ1 +KQCZM#T&8dAeqM"8GSGdK'#Hq5)$NP!&T[b,kNGCa!0(SSSDF$B4NTDK`0"2l(0( +d-,,)p%Gf8dL4DD1`Ue0Jk!9D$8"V'eJJ%@0!Dfi8V3bF[d0S24CS,QAN)9&'E(k +c!XUr`L)5!FDaHSdZqB#B8MkhN3R(M0Pf'RBHmP'3!",-YS2CiK$!mMYcS8+4MXC +*P"j!3U'mNKGiBIrfY5rXV,Q8`CEU0#b"H0h$VNi1VPj+Z#XAph1jD9QCB[Ua'KA +lNdmjT$+Y(`%Y(K-"24`#$LR1Ca4a'mklib6823)5+Yj)**30Xed+%9h61!)51[# +)1r2X%8MSDS@%8M)"Yd*#jA"&E$m58EN"j`p!4UH0J)cUdBJ'T6&ERBHiD$0#qM3 +9p@N+)DhRK,54%p++2JJTD`)0T(3"JJR6aNK)qh"h(""5'5&jR*5@lQG5+SYI%bH +Q$iF3dfNM*UD()SBI,LjHB%MQj,54Np1+2XKT(,Qj-R,(3Nk2!0RrK5#RIB9L%Vd +(+rmLlT39",`Y(!djPFqa8!XZrG40Brb`r$$4%kNm3'PQ+[m#p"`)6m)@5R*8PP' +B4SZ`4Jb)C80k)M%+jm$Jf$RBZa-TE&,N"598)VPJ)Z[BYL,JYpJ#hLEaEK05Vp- +$G#[KNrCXi'S2GFcKq0DQb#950`M6HbaKaU-jK9GeeS&A+#H3!`I)T+5E"@&X0rB +XRPQLIl+BTB9*UTDmJcI8D"ZITEq*cmkZARAjh`*0DX+PZ8[hEG1Yije1@$$KD%N +fHV4CcIhH(ZVk5[qBXI4lMH`6RVdMTc$YDXK5Q#Qm'1'bA8X@PKR4!4d,`e*FE#Q +Y+S&2blKATC!!1CC`Lfi9Gf$B!Tl"!Y,+#R-GVf+!ipRLMQd4`Ik,H&aH4'jfqXK +A38"c8JNB8X)j`paE5[4(LedpcDSZeZKcY[2%F%KRFdhMdhj0YC`NBmVa!&r'1Kk +bC#'f'L`M2IZFh`pAc%&lb#b2lE#*BcN-dH8M(iBd&*5%JS-C3T6YAbdY56%dH3, +$,9mYeCf5YZJjd!BqK,LcQ5@kA)G`9%ErSLBl"Va'4@`V9",!51[FT590lrQH2!5 +&!NEDMS1dYFaGDYqQ@aB#VKrKU0c#m[*S@,`Ib*ECbq+([8Hh0R!4HNVLU*RDf0L +SUD6Z3-Sh)(4YIJd$KZd1YrRNE@55EP)GEQS,hA3)T*L-+95"G-3m$ClV@KT`4$- +UY*8(1MdA2,qAfPSZi*'Ee()0-ANcIdKU'Qmj2%5+,cI*i3C$I%2-hqJXF,K*#0R +NG#BB$U[,R8PpEK@F&Aa6Dq3QISZ'J)a##!X`95D9T8PL&%amb8%cbD"3`m2V[ej +C8rdKLLk&$*I0jbmZ9AX)S!%Mj4F`alP!5+p3"q'K,f%ffFV"B$Jd'+h),U21qJ- +8eG)p'@DTQBET1'-eM!qZ)+8LB)'J4S4@8S*Y,)`j8%UMb)5!mG0$%TH%&Xl@BUT +XikV,P-!49F2I'Y'GX4'G!T[E!lDa%i)bJR)U6b-jE%VIKcNL"2d11d!KEi14NQZ +$&!cH%QRi`d0TF#&#@VjeiqI94H-PK[20TXj9*l!8Yr-`2Dlai[Bb!kEki-C"T(F +%@$5K-qFd$edDDkS0E9JX'dTmMX9QRi[MhMc-eE2GPXP)J)fq33GXSD5Jhr,pc5h +G39TH&PZmAYXiNriQcPaA[@Um`RGHVB[GGZ'YlK,AqHD+Qd`hL4TMCG9-cXU!D9V +#0rFUE%JaC[!-BB80b)HTdXdp-LH%HaXRRAC`G$B8J%QKNJdX%L3!FM8#l9ll0JD +HI`dY'qDLYdF@K"""'H&*pkiGJk#b5%&N)UUKK"K[cUr+D+1U`KQ68fbPjS$(c'M +`-42r("4p&brkKi!Z9VMeS5F2IflGSF[9P@-X0!!VrBAG1c4QB4(X)#flNXc61)m +Eq@,S+Tf('c*j-4L-456Ta%ed6!'SUFDFG3j5AXk+QY,LAD+A+4fc[A+LcF$C##+ +frj0FfJIi,#**(CQdSF$)LGcG468f#Mp3-e,DY!',UTH-hJa-!Jm5R3r'BIQlhiR +h`X8#"`k9b,(R`JaDA(TfZCa'D%q'-U"5&[JlfG6jdmQb#4BT+qq)JZlHMi&HQ&" +A21Ha+qQbA*bG*U@$XD3X9BU!D(1da!&+(NlU@I*J!a,3eNZa&G9+eh'i!epk9Hh +,R@T-2fk+`Ch5[1-!#FfB@R3TZ9Y-M!iU3c1TIYjVYHEVbSK6IhD*G8q'[*!!ck- +S`&0DKkeRMjb%"5l02Xp,j#)SL3QcQ-X46D%*jfJk'4h%0ZlQ6-H$9j@A9r%b@AQ +CM*GAP*GAm2+bm[)bA[kZ[2`G,imS,irJj9(Pj9'mV&&HeZ$PVmV,Ar'bA(PCMTG +I+#qrL#Ie,8!r%A)[Ar!hIbe82L`r+'UN,D1&TGRPkBa4Q&NH&SrLkiRX3mRiNJj +@2V%#hG6I@5aK%)Xd[hLBZjSVQFl$blaJLT4615qTDJJ[-S!80C!!f(&G3@Dk'KH +lRJYF$i(V5@"P91$kh0AiHTq,HTq,H[q,db5L`@S0%5+V!C!!UqAh"EU4ZYIe%93 +!HK0h3-&Kk(IN&2UAcHTQ*L"9I@df[@+EjNpX)9@"pl8m)L[di3r*203K9ler(N, +$A`8TbN9K19H@(PGSiq"(0a+"L,8!`R3YMlUV35AL0H-$qBRATHTpLdG,$KLKFS, +A#CAG*@kpEqiY)J'PKQh(&ir#ZI&9MCEE8B"G5,A%MrpA)p*rFC&IBQ&B9JTcMPk +l5%4I6T8dJbdVl9`T[iUL3ADak0"8rhrm1,8,eCcr@cqHm"'5qM2"ADHe2&0aX&I +UH4GT*6(-ZXU9%&c[fLK9-#iei`NF@mbAXpPB,ErX5b$e@+6i1r%Z0Z%(KdLfkkS +@Ve@eXYLA26cj*NID*EDmM-aFH@P))l9EVe4#jBQE"rhZbi2qf1@[QP5fU"eBe0Z +r&@1Q,e3A,V5Ke#')4A*k%,S2-[NbmB9,&e"YCHl-6(E-ZGb3!)0i48H0dKb!dMP +Z("U6,L2a8MZUJYMP+P`f36AEIEN+Vr1ES"Vi`H@Q2")f)9P"C@K,bd-5(Y#%!VR +VI+,qSDAMIRI,Z1`1Q05ZQ`Y8rmN@'"TaHcbIr%'&@U[kBbhMYF6k66,3SC'48%Y +UUlT3UkK`[6DETmE@"eZ4CYR&%PCp!-,e%D(BL`GH16Ji)ll%0(p'#1#lZ*)F"m4 +Bb`4aRl%#$HeZZB*Nc9iR&(0HhHbrkFHTrN5JIF,X+jX$hDRi1&9-+8LmIX+k+qq +1Hr+N,U0KcL@S5`l9G09X8KCaNC!!$M8XP`65qF%@ZVND9"YS1C`XT-DANk-V$qU +X51!I(eM(QZ3EXVfBZ$#ejqBLh1c,q'E,&G''49bC2FS@e(,j-PY+l&dd!Vr8!+K +[0j%#DZ`b,N`*5rjCM1Nr!dMF*EU(ARF%$&YqeL3j@P#ZVL!p1[$`IVTS0C*Yj#a +DA9-P2IM"9MAf)9i!(2L5R[ekkk,9cK6kURRf`kdXQG9i+2$Z*SCUN!!'qqeE4(I +U2bqCY'Le'+-*dSq#@NdU%dR+m%1TdPBfE+Lf4J)QKDVS4UGYhDTUq$GhY`9DCUj +Z@"$9NMEFB+LCEJ()LE!*BD`84E@UUGE(`+4S)E[BYj*AkLij#$@$MJ#cCkfPN@5 +JN3j$SpmkZhYc`06XYbm1P,Mcl4`4EF5f8`N4rZ!Le&XmaJF8dT8%9@1Y0(l`$jr +"3'Uh(D'BVlfB9!pL&TY,l+q6TiFXYcKdQReEq'p4TD4APGS6jZrbl"aVIL&9VpN +CDC%T*"mm`3S5EYX6*m9q0bPMYh3MX&[-5$AGYK5!e2eq3%lE6X&80Z%(*L931N5 +NNKhq5SQZMq-2m!+16LUZGmQGT8l0l5ZUZbBYfpJ&T`"N86-9&hAMF8F0ClXcKYJ +V()F#9HT-TPZd0TcrPcY'k38hDEYF9Y5&$Sck%aKqa26HApq`2blY-06S0Y%4PB' +5eY!$E12XX@k+rJ3Y[0c&ZRL%*beD$,A'')C"GU!8K%m1p%lBRPN`%+RVi#'II*@ +BGmD+,YQk+bH8*NSq-l&3EU#`YplMV4,hHJTZAFk4[b!%'*,mcH%TPV`+VD9+6*' +k*$Y8+$8RVf`YL3m'S-jpHKD))cUEZ3!f$p'`L6@G&HS8T1TQ60"M'%PT3k'i&j1 +V[9FLQe,-,0#94$BQ$eUjc&NJ%[R$5rdCd60'Y)q!*'QRG!P+(jSS'4-3A+!1(BV +Dm`X09%$!fP33SCe$9I,3mHrQS09[3A+ajdLTmHpF(#MGaBU1FjI4!mI$T45N"I3 +UHH@#hC!!`b@E$@k`V'Imc6Z!@#+@5&J9J93NA981B-YfcS)#BiV-3P'm3)b,j6T +GR,69TJ"9ec3HEQjT!F0628&P5YDI3"Lm+2"E[&qVZi++XNcK%eMd)II9NdrLPJ" +Ae4DJ,5@BJZ$-VL!4`#e5LMK(GTa1B"c206["5a3G['P#$c5`!ePhZk!lhd+(3Y! +GNNp'"d5aI%Ya89aK&K@-d5#jNkq!!038[qPU9Zm8fiSrKU*d#Pj5a"KHlV3pblD +)YbNK)8!pHM1NXaB$k33*eD8G8@`+&hXR&hXR&jX5+ID0U0MdE$1KA-%6LB&9)li +NU)RUdF&[NeSr#*942'T#q"3LRVG5$HUh`XiLkXV0KV5jXJY99ZT[TV59e-dI5YX +3Ki#B"i@),MTULe&a(dkU!L#i&`Gi4bCb`r4)Y"mcND%)346*jk`K`a%kM$6KTZF +qY9-db!,i%EX`q&4P8(QHI+r#NJ'A4@BR+*ChQ,4JdNFpUYk4b&*bJXbA+G!bTGf +db)M&YFZ,Lc1X4J&hKJ`'mRVN)XqlBK#V!-3l49F8Z"49Mmd`-L"`1-8&Xf8cdN$ +Xm[GLI"CEV9%k00(!1h6G53,ipYIp[X@"R$T$,&RpQiEl!Qpd9d$IAVX-%I344hd +Md1Tl,)"`hE$fTY6XI)&Y8ZNfmKT,6Uq`m!K2N!!!Y`q+ehV44!X3AG%MR3BfP6p +b+BX`N!"C,p3!L`i9R1"FXPU4,p4+,RS)qh+3!"i*GSR0hIh0K4#D`9R(%*(5B-6 +9@2F55aN5@0,c@jlSii`iHF*H,Y!TX3ZElfqlh6iC)4FUSPX)'IH2Dfp#%Ga&#@, +N"6HFbm@#ba`XPYp5XH8kDUB(iNdAJcQF0GP*!Q'4Tqr,F4[S%%hFlRIRpej($EF +EiF"H$(DlJqM16Khk',[aVScS[N3T!H2-5!LJ+3"9Y)f*5eD$jJerbGp'B,&+fk- +bmcH"0T6M*9'+0QM*-+%dZ#YLFP*SJaR'mpYSQDYf`dMX$YC"HEl0R`+%pb@'Jh! +SqY$Fb)8EfYa%2N%#2[eNLNJhKiBMMXXkKLEFjSM5[VQm3J+#((lhem)R8jc&iIp ++YrMjfP2j2VRfRdc*EbDbbJYh@CC1'30NbpfRH5L(+c)'jhN$r"!ph85%%HMDBJV +Qm'2d4KK3jdq3!*dG3VXb),9DbFSHP6Z3!1#1%(%()XA*JFdr@keF&b9bN5`0qTr +PbLAL3jNBS2SJm,D(N!!#'LS+FP8$Sbq4SCe*9EL[p8@Uc)BQJ(M&N!"qEaXh-R6 +)P4e!NQjX&1hqc3"Ej+H($1f9BrN"TEN!Tm8$%+-e-[&*9N8'U$-C5,T`chDG+j5 +3!,!2pUL-M-F"0i9Y`Q3l[df@FN!b'`iVeII&QD5dhJI)+F3(T,Z*!9pmq#&b5KY +LrKN')jXcFG"@9)*)BiN[0iMDPqUGk$Mm)8"V)J6@Yhq*4D+kP,j%9i8$F0+-k0$ +58I1PHRafYFX0"LNPMAY2B%*!DQBK($&GPa&bN`BH),TSj'%Rj61cT%#'+%S*KB4 +QN!!eH3PUXbBM5Y6hBlmeK2hi&(8"*mUi8E##1U0Hr30F!D3Q"a%+LR+$2DB'Af2 +9L#Z'JYf',jrSSI4(8'"Z+NR"6E#19f*LQFE3LLk+q,"U()$@3800G*XbSRTVUX) +QZUe8D&-lfpLV3ZS%$$el8@eA8-8*"3FD!"3RTA,bCJLf1f$$3+5AhpK+D8Uj!`* +36$fTSbJfm)#XM1SR'+VC(NGE-RTP)d&$MLi(0q+)+RCc`!""TjYb)i'8Ai)63Q6 +89r'MRD-,8GP-(T@ffTieG#H2LUG3`EG+2Sm`*06idTY@I(%P)2PZV`jFEJM8akC +!&GlE%$`ZE5ek9ZSHqaF%,chrhY,aP8a!5[ca+Er[qJ#+EBUbJ((a&-bG"3T4K6T +,"S)%13SV4#)Ykd!LjbN%$-(Hc'`Va[64i#+D8[[&!@8SQ[C5QP8CRFX$[1A[+F, +T`j!!iAAF%3H)jE6jfaE66IfKdN4+iMXQI6)00dR,-bElQqHf"0e$UI`LKFJ)"dN +UcUhd1[3l&Sa&XP0IdS63)G%S`[4TZZK#M(3M#[b2F2"#NK8RI%2q4[5Il9bQFH@ +U4[cSRIAH+pQlh(VerkQGU2`PYG0Tm&l*F-8I'G61'VHcV4cr#`,P&PCF4dA5()J +F+T2jiCI9!aSJZ((R`PQJZm`2e4rmpd1KCmeU)@(Q'jFqZA!Kl,ZArJ[R,PZfl!E +mK!Zrp5fK[1Zc3@'0d$!B[[2-*i)(2e8A*JZr%)*9`RTK3rLAi4H%qH&j`Jr19#i +@-[R$)9pi92JUr'2q-(c`#H(C$F,c'lVHZA4KqIS,3cpjIXMhj`ZMSm)f)IMC(fG +kRKSDa%*-i8rZ[9IiblhhlPL+dei92[fI`VSh4VZ&'8*Zq'GG3H&Uq0kZ4H%hcUc +j@2MYQH@,K0rJYkZbkjU`VbGAH2!c!AF*92mK&'("K3hK@jNXBBrJ@EC-b+'[F$- +q@a+Z(FS3cSCh#fXQ#+2Khcph3rL0#F),9B*IH+j+q'q9Mi3lcc`[[('Q@mJlmdI +KVm,b4ji9RK8q2R0eKK#H,[cfHH'&KUq%IeAf2r'24m,I2R0@q1a-6VMqc!EK%f% +6pPm5IRr'182`6KGqc[E[QrlkNZQT12-ViEl*`TlT`Q2#MZP#N[$I*`ZTNi@pdi8 +I#TlTJKd2hK,#&e)VK5jKU#GR3rJ(`NY#8I9R3Xq-ImcmBi1`rP5iq-5ii,Ppr3T +"Q$`Z,2STNSGG@0r`bSP2K3PIIE&'+2b(82V'S,$cjm+@m3h20MakUI,e4i5KDQ( +[&p1&r%(K*`#3!aJ!!"mS!!"6i!#3!`J!N!-J!!!r2!!(UI!!N!-+@-!!AF!!!&h !!*!$'Qi!N!-"GJ"1F8U$CL*"l3!J)$`r2!!!)MbTm!!"5N&Q"%T!C`T)3%K"))! K33!%3UG"q[r1d2`"!#m),c`!!"PZ,`0K!!+X9)pR3%)i#Pj#Tbmm4%&836mm"0@ S(h!"%F!+ANUICaK1F6!mUA#R4N2k!#SLL%(k!#!`2+P`TNG+JfF%F!&1G8lY!#* @@ -3787,30 +3726,30 @@ rm#"!5K"Q"&*'B1K`!#e!rq3f"VC&C!!!U%T$Cc)J,[rNH!!i!be%rrcBV[r`)%3 3!6i!,@lrj2rXF!!Y32rS-!G64dT!Cb!J,[rSiiJL,[rXG!(#JS#",8$rk#!Zrqc LL#e!rqaJf$3'FJ!b!Y+"dUlrp#""-K"`!$!"jB$3Lb"!)+lrk&*'8Ulrj'!!re4 -haci6Pj1G5*I)&qJ*5k!DJ*#Pdl4)Pm5(c!I5J&R"+G'B!+M4Lk)6Y%LAa)I-"m -JAdS"C`5Q4f!#SNG1d3#3!`S!1+!"!!8!N!B"!!!"SiS!!D++!!!&5e028P3'GJ# +JAdS"C`5Q4f!#SNG1d3#3!`S!1+!"!!8!N!B"!!!"Pi!!!CD!!!!&5e028P3'aJ# !!"`%FJ!@38a59!!+!,T"9A-b!!!"2N*14%`!!3&+3dj86!!!!@*$6d4&!!F"EN4 "9%%!!!(14%P86!!2!GT%6%p(!!3#QNC548B!"!,@4Q9KG!!!!a**3diM!!3$(NP $6di!!!0D8%P$9!!%!fC3Ff9d!!!$SP0*@N8!!!1Z8e45)!!"!lT69&)M!!!$dQ& eFh3!!32HBfPMEJ!!!rCNBh4L!!%%!Q4XChJ!!33DD@0X1!!!"$*fCA*c!!%%2J# -!rrmJ!*!)JIrr)!!!%!#3"B,rrb!!!#!!N!@&rrmN!!!`!8$85!#'rrmN!!"!!8$ -6d!#(rrmJ!!"3!*!&L2rr)!!!B!#3"!)!rrmJ!!"b!*!%!J(rrb!!!))!N!3%!Ir -r)!!!NJ#3"!5[rrm!!"KB!*!((J!!''J!N!@!rrm!!"L-!*!%!3$rr`!!'-3!N!3 -"#2rr)!!Bj!#3"[rr+!'(i!#3"3%!R4`!*Um")kkB!!)!Ta`!X(`"303i!!-!X4` -!cCm"303`!!3!Za`"#E%"304F!!8!a4`"1ci"304J!!B!ca`"@r%"304B!!Irr`! -"L!S!N!ErrbJ!JH`!N!@!rrm!N!1L!*!&J[rr!!!"!*!'KIrr*!!"AJ%"@V!!K[r -r*!!"Y!&!iQ`!Krrr!!!#03#3"BMrr`!!!S8!N!@errmJ!!0G!*!%!3Arrb!!!mm -!N!3""rrr)!!Br`#3"!%)rrmJ!"QJ!*!%!J$rr`!!"(`!N!3#!Irr!!!%ZJ#3"!2 -SrrmJ!!8'!*!%"!(rrb!!"6)!N!3%5`!Y"!!D3`&!e+3%Vrrr!!!DN`#3"!%&!!! -J!!@b!*!%!3F!15!!'Y%!N!3"#!"+)!!Dl3#3"!2SrrmJ!!A8!*!%"%X!CJ3!'`N -"304d!)$rr`!!'b)!N!@"rrm!!"XY!*!&J[rr!!!E1!#3"B2rr`!!'d-!N!@%rrm -!!"Y1!*!'rrm!!D*m!*!&J2rr!!!E@3#3"B(rr`!!(&d!N!@#rrm!!"eK!*!&Jrr -r!!!HC3#3"B6rr`!!(fN!N!3%5rrr"!!JE3&!e(!!J[rr!!!&m!#3"!2Srrm!!!F -6!*!%"%crr`!!$L%!N!3%6Irr!!!2fJ#3"!41rrm!!"'6!*!&J2rr!!!6)3#3"2q -3"!!"Kr`!N!3#!!!()!!A@!#3"!)"!!iJ!"GS!*!&J2rr!!!AG!#3"h)!!#$S!*! -&K2rr!!!K3`#3"!4,rrm%!#&(!8"Ni!%&rrm!!"Hd!*!%!3Mrr`!!)Qd!N!3""3! -A!!!Aj3#3"!%)!)%!!#+K!*!&K2rr!!!LU`#3"3(rrb!!&qm!N!8#rrmJ!"Jb!*! -%"P0dBA4eF`C`FQpYF(3)a#"cG@CQDAJ'8h4KG(9c$NphEQ9b)(*PFfpeFQ0P#dP -ZFf9bG#"%DA0V%%9iDA0dD@jR8'&cFhG[FQ3E4AKTFh4TEQG3BA0cGfpbC#e"F(" -PBA*KEQ0P#dPZFf9bG#"%DA0V$NphEQ9b)(*PFfpeFQ0P'd9iDA0dD@jR8'&cFhG -[FQ3Y3A"`C@&bB@jMC3P6C@GYC@jd)$%*8f9RE@9ZG#!b#90PCfePER3J-`P6C@G -YC@jd)$8*8f9RE@9ZG#!f#90PCfePER3J0RqK: +!rrmJ!*!)JIrr)!!!%!#3"B,rrb!!!#!!N!@&rrmN!!!`!5Cim!#'rrmN!!"!!3! +HX!#(rrmJ!!"3!*!&L2rr)!!!B!#3"!)!rrmJ!!"b!*!%!J(rrb!!!))!N!3%!Ir +r)!!!NJ#3"!5[rrm!!"K#!*!((J!!'&)!N!@!rrm!!"Kf!*!%!3$rr`!!'+i!N!3 +"#2rr)!!BcJ#3"[rr+!&leJ#3"3%!R4`!*TN"!#-8!!)!Ta`!S[S"!#-3!!-!X4` +![l!"!#,m!!3!Za`!r98"!#,`!!8!a4`",Z)"!#,d!!B!ca`"8!`"!#,i!!Irr`! +"I!#3"rrr+!"e*3#3"B$rr`#3!k)!N!@#rrm!!!%!N!D&rrmN!!&H!3!M)!#'rrm +N!!'d!5K#Y!#(rrm!!!)e!*!&L2rr!!!#K3#3"EArrb!!!ed!N!3""Irr)!!$c`# +3"!%(rrmJ!"MT!*!%!3Mrrb!!'BS!N!3#!2rr!!!%I!#3"!)"rrm!!!5k!*!%!qM +rrb!!"3B!N!3%!Irr)!!&(!#3"!4,!#d%!"SY!5H6f!5[rrm!!"Tp!*!%!38!!#! +!"C`!N!3""`!j)!!DZ`#3"!%)!%SJ!"VA!*!%!qMrrb!!"Ei!N!3%5`"Q"!!Dm`% +QH5J!J2rr!!!E$!#3"B(rr`!!'aF!N!@#rrm!!"XL!*!&Jrrr!!!E,3#3"B6rr`! +!'cJ!N!Err`!"PR)!N!@!rrm!!"Y$!*!&JIrr!!!F4`#3"B,rr`!!(8X!N!@$rrm +!!"j2!*!&K2rr!!!I8`#3"!4,rrm%!#"A!3!M*!##rrm!!!AD!*!%!qMrr`!!"[d +!N!3%62rr!!!1#`#3"!40rrm!!!r%!*!%"%lrr`!!%Ad!N!@!rrm!!"-,!*!%rj! +%!!&lmJ#3"!)!!!FJ!"G#!*!%!J%!$L!!&e)!N!@!rrm!!"GH!*!(FJ!!)0)!N!@ +%rrm!!#%Y!*!%"%[rr`3!)6%"!#-B!3Arr`!!&ji!N!3"#2rr!!!L9`#3"!%&!"F +!!"I2!*!%!3J!J3!!)SX!N!@%rrm!!#+9!*!&!Irr)!!Af3#3"3,rrb!!'"`!N!3 +'8h4KG(9c"R"bEfe`G!M%)(0eCQCTH!C6G'&dGA-16hGZCA)JFQ9cEh9bBf8,5@j +cCA*d)%4TFfX34AKTFh4TEQG3BA0cGfpbC"Y&H'PcG'PZCe"KFh0hEh*N,8&`F'9 +KFQ&ZBf8,5@jcCA*d)%4TFfX16hGZCA)JFQ9cEh9bBf8E4AKTFh4TEQG3BA0cGfp +bC#e"F("PBA*KEQ0P#90PCfePER3J-3P6C@GYC@jd)$)*8f9RE@9ZG#!c#90PCfe +PER3J03P6C@GYC@jd)$B*8f9RE@9ZG#!fUl3: diff --git a/mac/tkMacResource.r b/mac/tkMacResource.r index bbc081e..63f72b8 100644 --- a/mac/tkMacResource.r +++ b/mac/tkMacResource.r @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacResource.r,v 1.6.8.1 2002/02/05 02:25:17 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacResource.r,v 1.6.8.2 2002/06/10 05:38:25 wolfsuit Exp $ */ /* @@ -32,8 +32,6 @@ #include "tcl.h" #include "tk.h" -#define TK_LIBRARY_RESOURCES 3000 - /* * The mechanisim below loads Tcl source into the resource fork of the * application. The example below creates a TEXT resource named @@ -46,43 +44,9 @@ * will load the TEXT resource named "Init". */ -read 'TEXT' (TK_LIBRARY_RESOURCES+1, "tk", purgeable,preload) - "::library:tk.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+2, "button", purgeable) - "::library:button.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+3, "dialog", purgeable) - "::library:dialog.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+4, "entry", purgeable) - "::library:entry.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+5, "focus", purgeable) - "::library:focus.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+6, "listbox", purgeable) - "::library:listbox.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+7, "menu", purgeable) - "::library:menu.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+8, "optMenu", purgeable) - "::library:optMenu.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+9, "palette", purgeable) - "::library:palette.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+10, "scale", purgeable) - "::library:scale.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+11, "scrlbar", purgeable) - "::library:scrlbar.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+12, "tearoff", purgeable) - "::library:tearoff.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+13, "text", purgeable) - "::library:text.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+14, "bgerror", purgeable) - "::library:bgerror.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+15, "console", purgeable) - "::library:console.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+16, "msgbox", purgeable) - "::library:msgbox.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+17, "comdlg", purgeable) - "::library:comdlg.tcl"; -read 'TEXT' (TK_LIBRARY_RESOURCES+18, "spinbox", purgeable) - "::library:spinbox.tcl"; - +#ifndef TCLTK_NO_LIBRARY_TEXT_RESOURCES +#include "tkMacTclCode.r" +#endif /* * The following two resources define the default "About Box" for Mac Tk. diff --git a/mac/tkMacWm.c b/mac/tkMacWm.c index 679cbff..7c254b2 100644 --- a/mac/tkMacWm.c +++ b/mac/tkMacWm.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacWm.c,v 1.11.2.1 2002/02/05 02:25:17 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacWm.c,v 1.11.2.2 2002/06/10 05:38:25 wolfsuit Exp $ */ #include <Gestalt.h> @@ -1559,7 +1559,7 @@ Tk_WmCmd( if ((argc != 3) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], - " stackorder window ?isabove|isbelow? ?window?\"", + " stackorder window ?isabove|isbelow window?\"", (char *) NULL); return TCL_ERROR; } @@ -1744,6 +1744,7 @@ Tk_WmCmd( } else if ((c == 't') && (strncmp(argv[1], "transient", length) == 0) && (length >= 3)) { Tk_Window master; + WmInfo *wmPtr2; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", @@ -1769,6 +1770,25 @@ Tk_WmCmd( return TCL_ERROR; } Tk_MakeWindowExist(master); + + if (wmPtr->iconFor != NULL) { + Tcl_AppendResult(interp, "can't make \"", argv[2], + "\" a transient: it is an icon for ", + Tk_PathName(wmPtr->iconFor), + (char *) NULL); + return TCL_ERROR; + } + + wmPtr2 = ((TkWindow *) master)->wmInfoPtr; + + if (wmPtr2->iconFor != NULL) { + Tcl_AppendResult(interp, "can't make \"", argv[3], + "\" a master: it is an icon for ", + Tk_PathName(wmPtr2->iconFor), + (char *) NULL); + return TCL_ERROR; + } + wmPtr->master = Tk_WindowId(master); wmPtr->masterWindowName = ckalloc((unsigned) (strlen(argv[3])+1)); strcpy(wmPtr->masterWindowName, argv[3]); @@ -3047,7 +3067,8 @@ TkWmStackorderToplevelWrapperMap(winPtr, table) WindowPeek wrapper; int newEntry; - if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr)) { + if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr) && + !Tk_IsEmbedded(winPtr)) { wrapper = (WindowPeek) TkMacGetDrawablePort(winPtr->window); hPtr = Tcl_CreateHashEntry(table, diff --git a/mac/tkMacXStubs.c b/mac/tkMacXStubs.c index 153aa13..1f1327c 100644 --- a/mac/tkMacXStubs.c +++ b/mac/tkMacXStubs.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacXStubs.c,v 1.10.8.1 2002/02/05 02:25:17 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacXStubs.c,v 1.10.8.2 2002/06/10 05:38:26 wolfsuit Exp $ */ #include "tkInt.h" @@ -106,6 +106,7 @@ TkpOpenDisplay( graphicsDevice = GetMainDevice(); display = (Display *) ckalloc(sizeof(Display)); + memset(display, 0, sizeof(Display)); display->resource_alloc = MacXIdAlloc; screen = (Screen *) ckalloc(sizeof(Screen) * 2); display->default_screen = 0; @@ -138,6 +139,7 @@ TkpOpenDisplay( screen->root_visual->map_entries = 2 ^ 8; gMacDisplay = (TkDisplay *) ckalloc(sizeof(TkDisplay)); + memset(gMacDisplay, 0, sizeof(TkDisplay)); gMacDisplay->display = display; return gMacDisplay; } @@ -803,3 +805,20 @@ TkGetDefaultScreenName( } return screenName; } + +/* + *---------------------------------------------------------------------- + * + * Tk_SetCaretPos -- + * + * This indicates the cursor position to Tk. This is not used + * on the Mac currently. + * + *---------------------------------------------------------------------- + */ + +void +Tk_SetCaretPos(Tk_Window tkwin, int x, int y, int height) +{ + return; +} diff --git a/macosx/Wish.pbproj/jingham.pbxuser b/macosx/Wish.pbproj/jingham.pbxuser index 7d26fab..ff24d5b 100644 --- a/macosx/Wish.pbproj/jingham.pbxuser +++ b/macosx/Wish.pbproj/jingham.pbxuser @@ -8,6 +8,7 @@ }; F537552A016C352C01DC9062 = { activeBuildStyle = F537552C016C352C01DC9062; + activeExecutable = F53756AB016C4DD401DC9062; activeTarget = F53756A0016C4DD401DC9062; addToTargets = ( F53755DF016C38D201DC9062, @@ -33,112 +34,1123 @@ F5A5146F01D05DC201DC9062, F5A5147001D0758C01DC9062, F5A852D6020F6C6C01DC9062, + F5A439C0029B609C01DC9064, + F5A439C2029B60ED01DC9064, + F5A439CA029B620901DC9064, + F55BC4B602B2DFB901DC9062, + F5978FD602B3190701DC9062, + ); + executables = ( + F53756AB016C4DD401DC9062, ); - intermediatesDirectory = /Volumes/CodeBits/jingham/Tcl/Build; perUserDictionary = { - PBXWorkspaceConfiguration = { - ContentSize = "{906, 681}"; + PBXPerProjectTemplateStateSaveDate = 45284733; + "PBXTemplateGeometry-F5314676015831810DCA290F" = { + ContentSize = "{716, 618}"; LeftSlideOut = { - ActiveTab = 0; - Frame = "{{0, 23}, {906, 658}}"; + Collapsed = NO; + Frame = "{{0, 23}, {716, 595}}"; Split0 = { ActiveTab = 2; - Frame = "{{259, 0}, {647, 658}}"; + Collapsed = NO; + Frame = "{{0, 0}, {716, 595}}"; Split0 = { - Frame = "{{0, 307}, {647, 351}}"; + Frame = "{{0, 249}, {716, 346}}"; }; SplitCount = 1; Tab0 = { Debugger = { - ActiveTab = 0; - Frame = "{{0, 0}, {647, 264}}"; + Collapsed = NO; + Frame = "{{0, 0}, {952, 321}}"; Split0 = { - Frame = "{{0, 136}, {647, 128}}"; + Frame = "{{0, 24}, {952, 297}}"; Split0 = { - Frame = "{{0, 0}, {187, 128}}"; + Frame = "{{0, 0}, {468, 297}}"; }; Split1 = { - Frame = "{{196, 0}, {451, 128}}"; + DebugVariablesTableConfiguration = ( + Name, + 126.803, + Value, + 150.074, + Summary, + 172.123, + ); + Frame = "{{477, 0}, {475, 297}}"; }; SplitCount = 2; }; SplitCount = 1; Tab0 = { - Frame = "{{0, 0}, {647, 112}}"; + Frame = "{{0, 0}, {100, 50}}"; }; Tab1 = { - Frame = "{{0, 0}, {647, 114}}"; + Frame = "{{0, 0}, {100, 50}}"; }; TabCount = 2; + TabsVisible = YES; }; - Frame = "{{0, 0}, {647, 264}}"; - LauncherConfigVersion = 4; + Frame = "{{0, 0}, {952, 321}}"; + LauncherConfigVersion = 7; }; Tab1 = { - Frame = "{{0, 0}, {647, 133}}"; + Frame = "{{0, 0}, {781, 452}}"; LauncherConfigVersion = 3; Runner = { - Frame = "{{0, 0}, {647, 133}}"; + Frame = "{{0, 0}, {781, 452}}"; }; }; Tab2 = { - BuildMessageFrame = "{{0, 0}, {649, 118}}"; - BuildTranscriptFrame = "{{0, 127}, {649, 158}}"; - Frame = "{{0, 0}, {647, 283}}"; + BuildMessageFrame = "{{0, 0}, {718, 85}}"; + BuildTranscriptFrame = "{{0, 94}, {718, 151}}"; + Frame = "{{0, 0}, {716, 243}}"; }; Tab3 = { - Frame = "{{0, 0}, {647, 225}}"; + Frame = "{{0, 0}, {612, 295}}"; }; TabCount = 4; + TabsVisible = NO; }; SplitCount = 1; Tab0 = { - Frame = "{{0, 0}, {235, 658}}"; + Frame = "{{0, 0}, {300, 533}}"; + GroupTreeTableConfiguration = ( + TargetStatusColumn, + 18, + MainColumn, + 267, + ); }; Tab1 = { - ClassesFrame = "{{0, 0}, {202, 56}}"; + ClassesFrame = "{{0, 0}, {280, 398}}"; + ClassesTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXClassColumnIdentifier, + 237, + ); + Frame = "{{0, 0}, {278, 659}}"; + MembersFrame = "{{0, 407}, {280, 252}}"; + MembersTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXMethodColumnIdentifier, + 236, + ); + }; + Tab2 = { + Frame = "{{0, 0}, {200, 100}}"; + }; + Tab3 = { Frame = "{{0, 0}, {200, 100}}"; - MembersFrame = "{{0, 65}, {202, 35}}"; - OptionsSetName = "Default Options"; + TargetTableConfiguration = ( + ActiveObject, + 16, + ObjectNames, + 202.296, + ); + }; + Tab4 = { + BreakpointsTreeTableConfiguration = ( + breakpointColumn, + 197, + enabledColumn, + 31, + ); + Frame = "{{0, 0}, {250, 100}}"; + }; + TabCount = 5; + TabsVisible = NO; + }; + StatusViewVisible = YES; + Template = F5314676015831810DCA290F; + ToolbarVisible = YES; + WindowLocation = "{217, 66}"; + }; + "PBXTemplateGeometry-F5CA7ECB015C094F0DCA290F" = { + ContentSize = "{668, 621}"; + LeftSlideOut = { + Collapsed = NO; + Frame = "{{0, 0}, {668, 621}}"; + Split0 = { + Collapsed = NO; + Frame = "{{0, 0}, {668, 621}}"; + Split0 = { + Frame = "{{0, 0}, {668, 621}}"; + }; + SplitCount = 1; + Tab0 = { + Debugger = { + Collapsed = NO; + Frame = "{{0, 0}, {484, 208}}"; + Split0 = { + Frame = "{{0, 24}, {484, 184}}"; + Split0 = { + Frame = "{{0, 0}, {236, 184}}"; + }; + Split1 = { + DebugVariablesTableConfiguration = ( + Name, + 123, + Value, + 85, + Summary, + 62.123, + ); + Frame = "{{245, 0}, {239, 184}}"; + }; + SplitCount = 2; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + Tab1 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + TabCount = 2; + TabsVisible = YES; + }; + Frame = "{{0, 0}, {484, 208}}"; + LauncherConfigVersion = 7; + }; + Tab1 = { + Frame = "{{0, 0}, {664, 208}}"; + LauncherConfigVersion = 3; + Runner = { + Frame = "{{0, 0}, {664, 208}}"; + }; + }; + Tab2 = { + BuildMessageFrame = "{{0, 0}, {666, 43}}"; + BuildTranscriptFrame = "{{0, 52}, {666, 0}}"; + Frame = "{{0, 0}, {664, 50}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {612, 295}}"; + }; + TabCount = 4; + TabsVisible = NO; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {313, 531}}"; + GroupTreeTableConfiguration = ( + TargetStatusColumn, + 18, + MainColumn, + 280, + ); + }; + Tab1 = { + ClassesFrame = "{{0, 0}, {280, 398}}"; + ClassesTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXClassColumnIdentifier, + 237, + ); + Frame = "{{0, 0}, {278, 659}}"; + MembersFrame = "{{0, 407}, {280, 252}}"; + MembersTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXMethodColumnIdentifier, + 236, + ); }; Tab2 = { - Frame = "{{0, 0}, {200, 644}}"; + Frame = "{{0, 0}, {200, 100}}"; }; Tab3 = { - Frame = "{{0, 0}, {177, 658}}"; + Frame = "{{0, 0}, {200, 557}}"; + TargetTableConfiguration = ( + ActiveObject, + 16, + ObjectNames, + 202.296, + ); + }; + Tab4 = { + BreakpointsTreeTableConfiguration = ( + breakpointColumn, + 197, + enabledColumn, + 31, + ); + Frame = "{{0, 0}, {250, 100}}"; + }; + TabCount = 5; + TabsVisible = NO; + }; + StatusViewVisible = NO; + Template = F5CA7ECB015C094F0DCA290F; + ToolbarVisible = NO; + WindowLocation = "{48, 103}"; + }; + "PBXTemplateGeometry-F5CA7ECC015C09990DCA290F" = { + ContentSize = "{773, 558}"; + LeftSlideOut = { + ActiveTab = 3; + Collapsed = NO; + Frame = "{{0, 23}, {773, 535}}"; + Split0 = { + ActiveTab = 0; + Collapsed = NO; + Frame = "{{224, 0}, {549, 535}}"; Split0 = { - Frame = "{{0, 0}, {177, 314}}"; + Frame = "{{0, 156}, {549, 379}}"; + }; + SplitCount = 1; + Tab0 = { + Debugger = { + Collapsed = NO; + Frame = "{{0, 0}, {549, 150}}"; + Split0 = { + Frame = "{{0, 24}, {549, 126}}"; + Split0 = { + Frame = "{{0, 0}, {267, 126}}"; + }; + Split1 = { + DebugVariablesTableConfiguration = ( + Name, + 93.80298, + Value, + 116.074, + Summary, + 62.123, + ); + Frame = "{{276, 0}, {273, 126}}"; + }; + SplitCount = 2; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + Tab1 = { + Frame = "{{0, 0}, {549, 243}}"; + }; + TabCount = 2; + TabsVisible = YES; + }; + Frame = "{{0, 0}, {549, 150}}"; + LauncherConfigVersion = 7; + }; + Tab1 = { + Frame = "{{0, 0}, {664, 208}}"; + LauncherConfigVersion = 3; + Runner = { + Frame = "{{0, 0}, {664, 208}}"; + }; }; - Split1 = { - Frame = "{{0, 323}, {177, 335}}"; + Tab2 = { + BuildMessageFrame = "{{0, 0}, {666, 43}}"; + BuildTranscriptFrame = "{{0, 52}, {666, 0}}"; + Frame = "{{0, 0}, {664, 50}}"; }; - SplitCount = 2; + Tab3 = { + Frame = "{{0, 0}, {612, 295}}"; + }; + TabCount = 4; + TabsVisible = NO; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {313, 531}}"; + GroupTreeTableConfiguration = ( + SCMStatusColumn, + 22, + TargetStatusColumn, + 18, + MainColumn, + 258, + ); + }; + Tab1 = { + ClassesFrame = "{{0, 0}, {280, 398}}"; + ClassesTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXClassColumnIdentifier, + 237, + ); + Frame = "{{0, 0}, {278, 659}}"; + MembersFrame = "{{0, 407}, {280, 252}}"; + MembersTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXMethodColumnIdentifier, + 236, + ); + }; + Tab2 = { + Frame = "{{0, 0}, {200, 100}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {200, 535}}"; + TargetTableConfiguration = ( + ActiveObject, + 16, + ObjectNames, + 202.296, + ); }; Tab4 = { - Frame = "{{0, 0}, {250, 658}}"; + BreakpointsTreeTableConfiguration = ( + breakpointColumn, + 197, + enabledColumn, + 31, + ); + Frame = "{{0, 0}, {250, 100}}"; }; TabCount = 5; + TabsVisible = YES; }; + StatusViewVisible = YES; + Template = F5CA7ECC015C09990DCA290F; + ToolbarVisible = YES; + WindowLocation = "{148, 126}"; }; + PBXWorkspaceContents = ( + { + LeftSlideOut = { + Split0 = { + Split0 = { + NavContent0 = { + bookmark = F55BC4C802B2E09101DC9062; + history = ( + F5A439CE029B6B5501DC9064, + F5A439D0029B6B5501DC9064, + F5A439D1029B6B5501DC9064, + F5A439D2029B6B5501DC9064, + F5A439D3029B6B5501DC9064, + F5A439D4029B6B5501DC9064, + F5A439D5029B6B5501DC9064, + F5A439D6029B6B5501DC9064, + F5A439D7029B6B5501DC9064, + F5BE671E029B6FEE01DC9064, + F55BC4B902B2E09101DC9062, + F55BC4BA02B2E09101DC9062, + F55BC4BB02B2E09101DC9062, + F55BC4BC02B2E09101DC9062, + F55BC4BD02B2E09101DC9062, + F55BC4BE02B2E09101DC9062, + ); + prevStack = ( + F5A439D9029B6B5501DC9064, + F5A439DA029B6B5501DC9064, + F5A439DB029B6B5501DC9064, + F5A439DE029B6B5501DC9064, + F5A439DF029B6B5501DC9064, + F5A439E0029B6B5501DC9064, + F5A439E1029B6B5501DC9064, + F5A439E2029B6B5501DC9064, + F5A439E3029B6B5501DC9064, + F5A439E4029B6B5501DC9064, + F5A439E5029B6B5501DC9064, + F5A439E6029B6B5501DC9064, + F5A439E7029B6B5501DC9064, + F5A439E8029B6B5501DC9064, + F5BE671F029B6FEE01DC9064, + F55BC4BF02B2E09101DC9062, + F55BC4C002B2E09101DC9062, + F55BC4C102B2E09101DC9062, + F55BC4C202B2E09101DC9062, + F55BC4C302B2E09101DC9062, + F55BC4C402B2E09101DC9062, + F55BC4C502B2E09101DC9062, + F55BC4C602B2E09101DC9062, + F55BC4C702B2E09101DC9062, + ); + }; + NavCount = 1; + NavGeometry0 = { + Frame = "{{0, 0}, {645, 651}}"; + NavBarVisible = YES; + }; + }; + SplitCount = 1; + Tab0 = { + Debugger = { + Split0 = { + SplitCount = 2; + }; + SplitCount = 1; + TabCount = 2; + }; + LauncherConfigVersion = 7; + }; + Tab1 = { + LauncherConfigVersion = 3; + Runner = { + }; + }; + TabCount = 4; + }; + SplitCount = 1; + Tab1 = { + OptionsSetName = "Default Options"; + }; + Tab3 = { + SplitCount = 2; + }; + TabCount = 6; + }; + }, + { + LeftSlideOut = { + Split0 = { + Split0 = { + NavContent0 = { + bookmark = F55BC4DE02B2E09101DC9062; + history = ( + F55BC4C902B2E09101DC9062, + F55BC4CA02B2E09101DC9062, + F55BC4CB02B2E09101DC9062, + F55BC4CC02B2E09101DC9062, + F55BC4CD02B2E09101DC9062, + F55BC4CE02B2E09101DC9062, + F55BC4CF02B2E09101DC9062, + F55BC4D002B2E09101DC9062, + F55BC4D102B2E09101DC9062, + F55BC4D202B2E09101DC9062, + F55BC4D302B2E09101DC9062, + ); + prevStack = ( + F55BC4D402B2E09101DC9062, + F55BC4D502B2E09101DC9062, + F55BC4D602B2E09101DC9062, + F55BC4D702B2E09101DC9062, + F55BC4D802B2E09101DC9062, + F55BC4D902B2E09101DC9062, + F55BC4DA02B2E09101DC9062, + F55BC4DB02B2E09101DC9062, + F55BC4DC02B2E09101DC9062, + F55BC4DD02B2E09101DC9062, + ); + }; + NavCount = 1; + NavGeometry0 = { + Frame = "{{0, 0}, {716, 346}}"; + NavBarVisible = YES; + }; + }; + SplitCount = 1; + Tab0 = { + Debugger = { + Split0 = { + SplitCount = 2; + }; + SplitCount = 1; + TabCount = 2; + }; + LauncherConfigVersion = 7; + }; + Tab1 = { + LauncherConfigVersion = 3; + Runner = { + }; + }; + TabCount = 4; + }; + SplitCount = 1; + Tab1 = { + OptionsSetName = "Default Options"; + }; + Tab3 = { + SplitCount = 2; + }; + TabCount = 6; + }; + }, + { + LeftSlideOut = { + Split0 = { + Split0 = { + NavContent0 = { + bookmark = F55BC4E702B2E09101DC9062; + history = ( + F55BC4DF02B2E09101DC9062, + F55BC4E002B2E09101DC9062, + F55BC4E102B2E09101DC9062, + ); + prevStack = ( + F55BC4E202B2E09101DC9062, + F55BC4E302B2E09101DC9062, + F55BC4E402B2E09101DC9062, + F55BC4E502B2E09101DC9062, + F55BC4E602B2E09101DC9062, + ); + }; + NavCount = 1; + NavGeometry0 = { + Frame = "{{0, 0}, {749, 262}}"; + NavBarVisible = YES; + }; + }; + SplitCount = 1; + Tab0 = { + Debugger = { + Split0 = { + SplitCount = 2; + }; + SplitCount = 1; + TabCount = 2; + }; + LauncherConfigVersion = 7; + }; + Tab1 = { + LauncherConfigVersion = 3; + Runner = { + }; + }; + TabCount = 4; + }; + SplitCount = 1; + Tab1 = { + OptionsSetName = "Default Options"; + }; + Tab3 = { + SplitCount = 2; + }; + TabCount = 6; + }; + }, + ); + PBXWorkspaceGeometries = ( + { + ContentSize = "{929, 674}"; + LeftSlideOut = { + ActiveTab = 0; + Collapsed = NO; + Frame = "{{0, 23}, {929, 651}}"; + Split0 = { + Collapsed = NO; + Frame = "{{284, 0}, {645, 651}}"; + Split0 = { + Frame = "{{0, 0}, {645, 651}}"; + }; + SplitCount = 1; + Tab0 = { + Debugger = { + Collapsed = NO; + Frame = "{{0, 0}, {681, 289}}"; + Split0 = { + Frame = "{{0, 24}, {681, 265}}"; + Split0 = { + Frame = "{{0, 0}, {333, 265}}"; + }; + Split1 = { + DebugVariablesTableConfiguration = ( + Name, + 82.80298, + Value, + 104.074, + Summary, + 126.123, + ); + Frame = "{{342, 0}, {339, 265}}"; + }; + SplitCount = 2; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + Tab1 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + TabCount = 2; + TabsVisible = YES; + }; + Frame = "{{0, 0}, {681, 289}}"; + LauncherConfigVersion = 7; + }; + Tab1 = { + Frame = "{{0, 0}, {681, 120}}"; + LauncherConfigVersion = 3; + Runner = { + Frame = "{{0, 0}, {681, 120}}"; + }; + }; + Tab2 = { + BuildMessageFrame = "{{0, 0}, {683, 127}}"; + BuildTranscriptFrame = "{{0, 136}, {683, 100}}"; + Frame = "{{0, 0}, {681, 234}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {681, 238}}"; + }; + TabCount = 4; + TabsVisible = NO; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {260, 651}}"; + GroupTreeTableConfiguration = ( + SCMStatusColumn, + 22, + TargetStatusColumn, + 18, + MainColumn, + 205, + ); + }; + Tab1 = { + ClassesFrame = "{{0, 0}, {250, 333}}"; + ClassesTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXClassColumnIdentifier, + 207, + ); + Frame = "{{0, 0}, {248, 554}}"; + MembersFrame = "{{0, 342}, {250, 212}}"; + MembersTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXMethodColumnIdentifier, + 206, + ); + }; + Tab2 = { + Frame = "{{0, 0}, {217, 554}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {239, 651}}"; + Split0 = { + Frame = "{{0, 0}, {239, 317}}"; + TargetTreeTableConfiguration = ( + ActiveTarget, + 16, + TargetName, + 207, + ); + }; + Split1 = { + BuildStyleTreeTableConfiguration = ( + IsActive, + 16, + Name, + 208, + ); + Frame = "{{0, 326}, {239, 325}}"; + }; + SplitCount = 2; + }; + Tab4 = { + ExecutableTreeTableConfiguration = ( + ActiveExecutable, + 16, + ExecutableName, + 217, + ); + Frame = "{{0, 0}, {250, 554}}"; + }; + Tab5 = { + BreakpointsTreeTableConfiguration = ( + breakpointColumn, + 197, + enabledColumn, + 31, + ); + Frame = "{{0, 0}, {250, 100}}"; + }; + TabCount = 6; + TabsVisible = YES; + }; + StatusViewVisible = YES; + Template = 64ABBB4501FA494900185B06; + ToolbarVisible = YES; + WindowLocation = "{79, 10}"; + }, + { + ContentSize = "{716, 618}"; + LeftSlideOut = { + Collapsed = NO; + Frame = "{{0, 23}, {716, 595}}"; + Split0 = { + ActiveTab = 2; + Collapsed = NO; + Frame = "{{0, 0}, {716, 595}}"; + Split0 = { + Frame = "{{0, 249}, {716, 346}}"; + }; + SplitCount = 1; + Tab0 = { + Debugger = { + Collapsed = NO; + Frame = "{{0, 0}, {952, 321}}"; + Split0 = { + Frame = "{{0, 24}, {952, 297}}"; + Split0 = { + Frame = "{{0, 0}, {468, 297}}"; + }; + Split1 = { + DebugVariablesTableConfiguration = ( + Name, + 126.803, + Value, + 150.074, + Summary, + 172.123, + ); + Frame = "{{477, 0}, {475, 297}}"; + }; + SplitCount = 2; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + Tab1 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + TabCount = 2; + TabsVisible = YES; + }; + Frame = "{{0, 0}, {952, 321}}"; + LauncherConfigVersion = 7; + }; + Tab1 = { + Frame = "{{0, 0}, {781, 452}}"; + LauncherConfigVersion = 3; + Runner = { + Frame = "{{0, 0}, {781, 452}}"; + }; + }; + Tab2 = { + BuildMessageFrame = "{{0, 0}, {718, 85}}"; + BuildTranscriptFrame = "{{0, 94}, {718, 151}}"; + Frame = "{{0, 0}, {716, 243}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {612, 295}}"; + }; + TabCount = 4; + TabsVisible = NO; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {300, 533}}"; + GroupTreeTableConfiguration = ( + SCMStatusColumn, + 22, + TargetStatusColumn, + 18, + MainColumn, + 245, + ); + }; + Tab1 = { + ClassesFrame = "{{0, 0}, {280, 398}}"; + ClassesTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXClassColumnIdentifier, + 237, + ); + Frame = "{{0, 0}, {278, 659}}"; + MembersFrame = "{{0, 407}, {280, 252}}"; + MembersTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXMethodColumnIdentifier, + 236, + ); + }; + Tab2 = { + Frame = "{{0, 0}, {200, 100}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {200, 100}}"; + Split0 = { + Frame = "{{0, 0}, {200, 45}}"; + TargetTreeTableConfiguration = ( + ActiveTarget, + 16, + TargetName, + 168, + ); + }; + Split1 = { + BuildStyleTreeTableConfiguration = ( + IsActive, + 16, + Name, + 169, + ); + Frame = "{{0, 54}, {200, 46}}"; + }; + SplitCount = 2; + }; + Tab4 = { + ExecutableTreeTableConfiguration = ( + ActiveExecutable, + 16, + ExecutableName, + 217, + ); + Frame = "{{0, 0}, {250, 100}}"; + }; + Tab5 = { + BreakpointsTreeTableConfiguration = ( + breakpointColumn, + 197, + enabledColumn, + 31, + ); + Frame = "{{0, 0}, {250, 100}}"; + }; + TabCount = 6; + TabsVisible = NO; + }; + StatusViewVisible = YES; + Template = F5314676015831810DCA290F; + ToolbarVisible = YES; + WindowLocation = "{17, 66}"; + }, + { + ContentSize = "{773, 558}"; + LeftSlideOut = { + Collapsed = NO; + Frame = "{{0, 23}, {773, 535}}"; + Split0 = { + ActiveTab = 0; + Collapsed = NO; + Frame = "{{24, 0}, {749, 535}}"; + Split0 = { + Frame = "{{0, 273}, {749, 262}}"; + }; + SplitCount = 1; + Tab0 = { + Debugger = { + ActiveTab = 1; + Collapsed = NO; + Frame = "{{0, 0}, {749, 267}}"; + Split0 = { + Frame = "{{0, 268}, {749, -1}}"; + Split0 = { + Frame = "{{0, 0}, {366, -1}}"; + }; + Split1 = { + DebugVariablesTableConfiguration = ( + Name, + 93.80298, + Value, + 116.074, + Summary, + 138.123, + ); + Frame = "{{375, 0}, {374, -1}}"; + }; + SplitCount = 2; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + Tab1 = { + Frame = "{{0, 0}, {749, 244}}"; + }; + TabCount = 2; + TabsVisible = YES; + }; + Frame = "{{0, 0}, {749, 267}}"; + LauncherConfigVersion = 7; + }; + Tab1 = { + Frame = "{{0, 0}, {664, 208}}"; + LauncherConfigVersion = 3; + Runner = { + Frame = "{{0, 0}, {664, 208}}"; + }; + }; + Tab2 = { + BuildMessageFrame = "{{0, 0}, {666, 43}}"; + BuildTranscriptFrame = "{{0, 52}, {666, 0}}"; + Frame = "{{0, 0}, {664, 50}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {612, 295}}"; + }; + TabCount = 4; + TabsVisible = NO; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {313, 531}}"; + GroupTreeTableConfiguration = ( + SCMStatusColumn, + 22, + TargetStatusColumn, + 18, + MainColumn, + 258, + ); + }; + Tab1 = { + ClassesFrame = "{{0, 0}, {280, 398}}"; + ClassesTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXClassColumnIdentifier, + 237, + ); + Frame = "{{0, 0}, {278, 659}}"; + MembersFrame = "{{0, 407}, {280, 252}}"; + MembersTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXMethodColumnIdentifier, + 236, + ); + }; + Tab2 = { + Frame = "{{0, 0}, {200, 100}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {200, 557}}"; + Split0 = { + Frame = "{{0, 0}, {200, 270}}"; + TargetTreeTableConfiguration = ( + ActiveTarget, + 16, + TargetName, + 168, + ); + }; + Split1 = { + BuildStyleTreeTableConfiguration = ( + IsActive, + 16, + Name, + 169, + ); + Frame = "{{0, 279}, {200, 278}}"; + }; + SplitCount = 2; + }; + Tab4 = { + ExecutableTreeTableConfiguration = ( + ActiveExecutable, + 16, + ExecutableName, + 217, + ); + Frame = "{{0, 0}, {250, 100}}"; + }; + Tab5 = { + BreakpointsTreeTableConfiguration = ( + breakpointColumn, + 197, + enabledColumn, + 31, + ); + Frame = "{{0, 0}, {250, 100}}"; + }; + TabCount = 6; + TabsVisible = YES; + }; + StatusViewVisible = YES; + Template = F5CA7ECC015C09990DCA290F; + ToolbarVisible = YES; + WindowLocation = "{148, 126}"; + }, + ); + PBXWorkspaceStateSaveDate = 45284733; + }; + perUserProjectItems = { + F55BC4B902B2E09101DC9062 = F55BC4B902B2E09101DC9062; + F55BC4BA02B2E09101DC9062 = F55BC4BA02B2E09101DC9062; + F55BC4BB02B2E09101DC9062 = F55BC4BB02B2E09101DC9062; + F55BC4BC02B2E09101DC9062 = F55BC4BC02B2E09101DC9062; + F55BC4BD02B2E09101DC9062 = F55BC4BD02B2E09101DC9062; + F55BC4BE02B2E09101DC9062 = F55BC4BE02B2E09101DC9062; + F55BC4BF02B2E09101DC9062 = F55BC4BF02B2E09101DC9062; + F55BC4C002B2E09101DC9062 = F55BC4C002B2E09101DC9062; + F55BC4C102B2E09101DC9062 = F55BC4C102B2E09101DC9062; + F55BC4C202B2E09101DC9062 = F55BC4C202B2E09101DC9062; + F55BC4C302B2E09101DC9062 = F55BC4C302B2E09101DC9062; + F55BC4C402B2E09101DC9062 = F55BC4C402B2E09101DC9062; + F55BC4C502B2E09101DC9062 = F55BC4C502B2E09101DC9062; + F55BC4C602B2E09101DC9062 = F55BC4C602B2E09101DC9062; + F55BC4C702B2E09101DC9062 = F55BC4C702B2E09101DC9062; + F55BC4C802B2E09101DC9062 = F55BC4C802B2E09101DC9062; + F55BC4C902B2E09101DC9062 = F55BC4C902B2E09101DC9062; + F55BC4CA02B2E09101DC9062 = F55BC4CA02B2E09101DC9062; + F55BC4CB02B2E09101DC9062 = F55BC4CB02B2E09101DC9062; + F55BC4CC02B2E09101DC9062 = F55BC4CC02B2E09101DC9062; + F55BC4CD02B2E09101DC9062 = F55BC4CD02B2E09101DC9062; + F55BC4CE02B2E09101DC9062 = F55BC4CE02B2E09101DC9062; + F55BC4CF02B2E09101DC9062 = F55BC4CF02B2E09101DC9062; + F55BC4D002B2E09101DC9062 = F55BC4D002B2E09101DC9062; + F55BC4D102B2E09101DC9062 = F55BC4D102B2E09101DC9062; + F55BC4D202B2E09101DC9062 = F55BC4D202B2E09101DC9062; + F55BC4D302B2E09101DC9062 = F55BC4D302B2E09101DC9062; + F55BC4D402B2E09101DC9062 = F55BC4D402B2E09101DC9062; + F55BC4D502B2E09101DC9062 = F55BC4D502B2E09101DC9062; + F55BC4D602B2E09101DC9062 = F55BC4D602B2E09101DC9062; + F55BC4D702B2E09101DC9062 = F55BC4D702B2E09101DC9062; + F55BC4D802B2E09101DC9062 = F55BC4D802B2E09101DC9062; + F55BC4D902B2E09101DC9062 = F55BC4D902B2E09101DC9062; + F55BC4DA02B2E09101DC9062 = F55BC4DA02B2E09101DC9062; + F55BC4DB02B2E09101DC9062 = F55BC4DB02B2E09101DC9062; + F55BC4DC02B2E09101DC9062 = F55BC4DC02B2E09101DC9062; + F55BC4DD02B2E09101DC9062 = F55BC4DD02B2E09101DC9062; + F55BC4DE02B2E09101DC9062 = F55BC4DE02B2E09101DC9062; + F55BC4DF02B2E09101DC9062 = F55BC4DF02B2E09101DC9062; + F55BC4E002B2E09101DC9062 = F55BC4E002B2E09101DC9062; + F55BC4E102B2E09101DC9062 = F55BC4E102B2E09101DC9062; + F55BC4E202B2E09101DC9062 = F55BC4E202B2E09101DC9062; + F55BC4E302B2E09101DC9062 = F55BC4E302B2E09101DC9062; + F55BC4E402B2E09101DC9062 = F55BC4E402B2E09101DC9062; + F55BC4E502B2E09101DC9062 = F55BC4E502B2E09101DC9062; + F55BC4E602B2E09101DC9062 = F55BC4E602B2E09101DC9062; + F55BC4E702B2E09101DC9062 = F55BC4E702B2E09101DC9062; + F5A439CE029B6B5501DC9064 = F5A439CE029B6B5501DC9064; + F5A439D0029B6B5501DC9064 = F5A439D0029B6B5501DC9064; + F5A439D1029B6B5501DC9064 = F5A439D1029B6B5501DC9064; + F5A439D2029B6B5501DC9064 = F5A439D2029B6B5501DC9064; + F5A439D3029B6B5501DC9064 = F5A439D3029B6B5501DC9064; + F5A439D4029B6B5501DC9064 = F5A439D4029B6B5501DC9064; + F5A439D5029B6B5501DC9064 = F5A439D5029B6B5501DC9064; + F5A439D6029B6B5501DC9064 = F5A439D6029B6B5501DC9064; + F5A439D7029B6B5501DC9064 = F5A439D7029B6B5501DC9064; + F5A439D9029B6B5501DC9064 = F5A439D9029B6B5501DC9064; + F5A439DA029B6B5501DC9064 = F5A439DA029B6B5501DC9064; + F5A439DB029B6B5501DC9064 = F5A439DB029B6B5501DC9064; + F5A439DE029B6B5501DC9064 = F5A439DE029B6B5501DC9064; + F5A439DF029B6B5501DC9064 = F5A439DF029B6B5501DC9064; + F5A439E0029B6B5501DC9064 = F5A439E0029B6B5501DC9064; + F5A439E1029B6B5501DC9064 = F5A439E1029B6B5501DC9064; + F5A439E2029B6B5501DC9064 = F5A439E2029B6B5501DC9064; + F5A439E3029B6B5501DC9064 = F5A439E3029B6B5501DC9064; + F5A439E4029B6B5501DC9064 = F5A439E4029B6B5501DC9064; + F5A439E5029B6B5501DC9064 = F5A439E5029B6B5501DC9064; + F5A439E6029B6B5501DC9064 = F5A439E6029B6B5501DC9064; + F5A439E7029B6B5501DC9064 = F5A439E7029B6B5501DC9064; + F5A439E8029B6B5501DC9064 = F5A439E8029B6B5501DC9064; + F5BE671E029B6FEE01DC9064 = F5BE671E029B6FEE01DC9064; + F5BE671F029B6FEE01DC9064 = F5BE671F029B6FEE01DC9064; + }; + projectwideBuildSettings = { + OBJROOT = "/Volumes/CodeBits/jingham/Tcl/Merge-Build"; + SYMROOT = "/Volumes/CodeBits/jingham/Tcl/Merge-Products"; }; - productDirectory = /Volumes/CodeBits/jingham/Tcl/Products; wantsIndex = 1; wantsSCM = -1; }; F53755DF016C38D201DC9062 = { activeExec = 0; - customExecs = { - }; }; F53756A0016C4DD401DC9062 = { activeExec = 0; - customExecs = { - }; - targetExecs = { - macosx = ( - F53756AB016C4DD401DC9062, - ); - }; + executables = ( + F53756AB016C4DD401DC9062, + ); }; F53756AB016C4DD401DC9062 = { activeArgIndex = 2147483647; @@ -150,15 +1162,486 @@ environmentEntries = ( ); isa = PBXExecutable; + name = "Wish Shell"; shlibInfoDictList = ( ); sourceDirectories = ( ); }; + F55BC4B602B2DFB901DC9062 = { + fileReference = F5375580016C389901DC9062; + isa = PBXFileBreakpoint; + lineNumber = 201; + state = 2; + }; + F55BC4B902B2E09101DC9062 = { + fRef = F5375553016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXEvent.c: 242"; + rLen = 0; + rLoc = 6185; + rType = 0; + vrLen = 1438; + vrLoc = 5937; + }; + F55BC4BA02B2E09101DC9062 = { + fRef = F55BC46A02B2D3F301DC9062; + isa = PBXTextBookmark; + name = "panedwindow.tcl: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1395; + vrLoc = 0; + }; + F55BC4BB02B2E09101DC9062 = { + fRef = F55BC4EA02B2E09101DC9062; + isa = PBXTextBookmark; + name = "tclDecls.h: 140"; + rLen = 7; + rLoc = 4620; + rType = 0; + vrLen = 1564; + vrLoc = 3873; + }; + F55BC4BC02B2E09101DC9062 = { + fRef = F55BC4EB02B2E09101DC9062; + isa = PBXTextBookmark; + name = "tcl.h: 282"; + rLen = 0; + rLoc = 7897; + rType = 0; + vrLen = 946; + vrLoc = 7395; + }; + F55BC4BD02B2E09101DC9062 = { + bstl = F537552C016C352C01DC9062; + isa = PBXBuildStyleBookmark; + }; + F55BC4BE02B2E09101DC9062 = { + isa = PBXTargetBookmark; + trg = F53755DF016C38D201DC9062; + }; + F55BC4BF02B2E09101DC9062 = { + fRef = F5375553016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXEvent.c: 242"; + rLen = 0; + rLoc = 6185; + rType = 0; + vrLen = 1438; + vrLoc = 5937; + }; + F55BC4C002B2E09101DC9062 = { + isa = PBXTargetBookmark; + trg = F53755DF016C38D201DC9062; + }; + F55BC4C102B2E09101DC9062 = { + fRef = F55BC46A02B2D3F301DC9062; + isa = PBXTextBookmark; + name = "panedwindow.tcl: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1395; + vrLoc = 0; + }; + F55BC4C202B2E09101DC9062 = { + isa = PBXTargetBookmark; + trg = F53755DF016C38D201DC9062; + }; + F55BC4C302B2E09101DC9062 = { + fRef = F55BC46A02B2D3F301DC9062; + isa = PBXTextBookmark; + name = "panedwindow.tcl: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1395; + vrLoc = 0; + }; + F55BC4C402B2E09101DC9062 = { + isa = PBXTargetBookmark; + trg = F53755DF016C38D201DC9062; + }; + F55BC4C502B2E09101DC9062 = { + fRef = F55BC4E802B2E09101DC9062; + isa = PBXTextBookmark; + name = "tclDecls.h: 140"; + rLen = 7; + rLoc = 4620; + rType = 0; + vrLen = 1564; + vrLoc = 3873; + }; + F55BC4C602B2E09101DC9062 = { + fRef = F55BC4E902B2E09101DC9062; + isa = PBXTextBookmark; + name = "tcl.h: 282"; + rLen = 0; + rLoc = 7897; + rType = 0; + vrLen = 946; + vrLoc = 7395; + }; + F55BC4C702B2E09101DC9062 = { + bstl = F537552C016C352C01DC9062; + isa = PBXBuildStyleBookmark; + }; + F55BC4C802B2E09101DC9062 = { + isa = PBXTargetBookmark; + trg = F53755DF016C38D201DC9062; + }; + F55BC4C902B2E09101DC9062 = { + fRef = F537554A016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXButton.c: hilitePart"; + rLen = 32; + rLoc = 30847; + rType = 0; + vrLen = 569; + vrLoc = 30571; + }; + F55BC4CA02B2E09101DC9062 = { + fRef = F53755BE016C389901DC9062; + isa = PBXTextBookmark; + name = "tkTextBTree.c: tagPtr"; + rLen = 32; + rLoc = 71434; + rType = 0; + vrLen = 612; + vrLoc = 71152; + }; + F55BC4CB02B2E09101DC9062 = { + fRef = F537554C016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXColor.c: TkpGetColor"; + rLen = 76; + rLoc = 6526; + rType = 0; + vrLen = 834; + vrLoc = 6146; + }; + F55BC4CC02B2E09101DC9062 = { + fRef = F5375550016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXDialog.c: Tk_ChooseDirectoryObjCmd"; + rLen = 48; + rLoc = 18681; + rType = 0; + vrLen = 585; + vrLoc = 18448; + }; + F55BC4CD02B2E09101DC9062 = { + fRef = F5375557016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXKeyboard.c: InitKeyMaps"; + rLen = 67; + rLoc = 2187; + rType = 0; + vrLen = 563; + vrLoc = 1984; + }; + F55BC4CE02B2E09101DC9062 = { + fRef = F5375559016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXMenu.c: index"; + rLen = 30; + rLoc = 28077; + rType = 0; + vrLen = 523; + vrLoc = 27873; + }; + F55BC4CF02B2E09101DC9062 = { + fRef = F537555B016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXMenus.c: SourceDialog"; + rLen = 41; + rLoc = 8301; + rType = 0; + vrLen = 463; + vrLoc = 8060; + }; + F55BC4D002B2E09101DC9062 = { + fRef = F537553E016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSX.h: 18"; + rLen = 27; + rLoc = 385; + rType = 0; + vrLen = 517; + vrLoc = 195; + }; + F55BC4D102B2E09101DC9062 = { + fRef = F5375561016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXSend.c: RegOpen"; + rLen = 38; + rLoc = 8016; + rType = 0; + vrLen = 974; + vrLoc = 7563; + }; + F55BC4D202B2E09101DC9062 = { + fRef = F5375567016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXWm.c: Tk_WmCmd"; + rLen = 62; + rLoc = 16028; + rType = 0; + vrLen = 571; + vrLoc = 15789; + }; + F55BC4D302B2E09101DC9062 = { + fRef = F55BC46802B2D38B01DC9062; + isa = PBXTextBookmark; + rLen = 1; + rLoc = 283; + rType = 1; + }; + F55BC4D402B2E09101DC9062 = { + fRef = F537554A016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXButton.c: hilitePart"; + rLen = 32; + rLoc = 30847; + rType = 0; + vrLen = 569; + vrLoc = 30571; + }; + F55BC4D502B2E09101DC9062 = { + fRef = F53755BE016C389901DC9062; + isa = PBXTextBookmark; + name = "tkTextBTree.c: tagPtr"; + rLen = 32; + rLoc = 71434; + rType = 0; + vrLen = 612; + vrLoc = 71152; + }; + F55BC4D602B2E09101DC9062 = { + fRef = F537554C016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXColor.c: TkpGetColor"; + rLen = 76; + rLoc = 6526; + rType = 0; + vrLen = 834; + vrLoc = 6146; + }; + F55BC4D702B2E09101DC9062 = { + fRef = F5375550016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXDialog.c: Tk_ChooseDirectoryObjCmd"; + rLen = 48; + rLoc = 18681; + rType = 0; + vrLen = 585; + vrLoc = 18448; + }; + F55BC4D802B2E09101DC9062 = { + fRef = F5375557016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXKeyboard.c: InitKeyMaps"; + rLen = 67; + rLoc = 2187; + rType = 0; + vrLen = 563; + vrLoc = 1984; + }; + F55BC4D902B2E09101DC9062 = { + fRef = F5375559016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXMenu.c: index"; + rLen = 30; + rLoc = 28077; + rType = 0; + vrLen = 523; + vrLoc = 27873; + }; + F55BC4DA02B2E09101DC9062 = { + fRef = F537555B016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXMenus.c: SourceDialog"; + rLen = 41; + rLoc = 8301; + rType = 0; + vrLen = 463; + vrLoc = 8060; + }; + F55BC4DB02B2E09101DC9062 = { + fRef = F537553E016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSX.h: 18"; + rLen = 27; + rLoc = 385; + rType = 0; + vrLen = 517; + vrLoc = 195; + }; + F55BC4DC02B2E09101DC9062 = { + fRef = F5375561016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXSend.c: RegOpen"; + rLen = 38; + rLoc = 8016; + rType = 0; + vrLen = 974; + vrLoc = 7563; + }; + F55BC4DD02B2E09101DC9062 = { + fRef = F5375567016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXWm.c: Tk_WmCmd"; + rLen = 62; + rLoc = 16028; + rType = 0; + vrLen = 571; + vrLoc = 15789; + }; + F55BC4DE02B2E09101DC9062 = { + fRef = F55BC46802B2D38B01DC9062; + isa = PBXTextBookmark; + name = "tkPanedWindow.c: 279"; + rLen = 0; + rLoc = 11411; + rType = 0; + vrLen = 999; + vrLoc = 11180; + }; + F55BC4DF02B2E09101DC9062 = { + fRef = F55BC4ED02B2E09101DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXAppInit.c: 155"; + rLen = 0; + rLoc = 4698; + rType = 0; + vrLen = 383; + vrLoc = 4567; + }; + F55BC4E002B2E09101DC9062 = { + fRef = F5375593016C389901DC9062; + isa = PBXTextBookmark; + name = "tkConfig.c: DoObjConfig"; + rLen = 0; + rLoc = 24585; + rType = 0; + vrLen = 404; + vrLoc = 24440; + }; + F55BC4E102B2E09101DC9062 = { + fRef = F5375580016C389901DC9062; + isa = PBXTextBookmark; + rLen = 0; + rLoc = 204; + rType = 1; + }; + F55BC4E202B2E09101DC9062 = { + fRef = F55BC4EE02B2E09101DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXAppInit.c: 155"; + rLen = 0; + rLoc = 4698; + rType = 0; + vrLen = 388; + vrLoc = 4639; + }; + F55BC4E302B2E09101DC9062 = { + fRef = F5375580016C389901DC9062; + isa = PBXTextBookmark; + name = "tk3d.c: Tk_Get3DBorder"; + rLen = 0; + rLoc = 6396; + rType = 0; + vrLen = 548; + vrLoc = 6264; + }; + F55BC4E402B2E09101DC9062 = { + fRef = F55BC4EC02B2E09101DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXAppInit.c: 155"; + rLen = 0; + rLoc = 4698; + rType = 0; + vrLen = 383; + vrLoc = 4567; + }; + F55BC4E502B2E09101DC9062 = { + fRef = F5375580016C389901DC9062; + isa = PBXTextBookmark; + name = "tk3d.c: Tk_Get3DBorder"; + rLen = 0; + rLoc = 6335; + rType = 0; + vrLen = 482; + vrLoc = 6158; + }; + F55BC4E602B2E09101DC9062 = { + fRef = F5375593016C389901DC9062; + isa = PBXTextBookmark; + name = "tkConfig.c: DoObjConfig"; + rLen = 0; + rLoc = 24585; + rType = 0; + vrLen = 404; + vrLoc = 24440; + }; + F55BC4E702B2E09101DC9062 = { + fRef = F5375580016C389901DC9062; + isa = PBXTextBookmark; + name = "tk3d.c: Tk_Get3DBorder"; + rLen = 0; + rLoc = 6396; + rType = 0; + vrLen = 482; + vrLoc = 6158; + }; + F55BC4E802B2E09101DC9062 = { + isa = PBXFileReference; + name = tclDecls.h; + path = /Volumes/CodeBits/jingham/Tcl/Source/tcl/generic/tclDecls.h; + refType = 0; + }; + F55BC4E902B2E09101DC9062 = { + isa = PBXFileReference; + name = tcl.h; + path = /Volumes/CodeBits/jingham/Tcl/Source/tcl/generic/tcl.h; + refType = 0; + }; + F55BC4EA02B2E09101DC9062 = { + isa = PBXFileReference; + name = tclDecls.h; + path = /Volumes/CodeBits/jingham/Tcl/Source/tcl/generic/tclDecls.h; + refType = 0; + }; + F55BC4EB02B2E09101DC9062 = { + isa = PBXFileReference; + name = tcl.h; + path = /Volumes/CodeBits/jingham/Tcl/Source/tcl/generic/tcl.h; + refType = 0; + }; + F55BC4EC02B2E09101DC9062 = { + isa = PBXFileReference; + name = tkMacOSXAppInit.c; + path = /Volumes/CodeBits/jingham/Tcl/Source/tk/macosx/tkMacOSXAppInit.c; + refType = 0; + }; + F55BC4ED02B2E09101DC9062 = { + isa = PBXFileReference; + name = tkMacOSXAppInit.c; + path = /Volumes/CodeBits/jingham/Tcl/Source/tk/macosx/tkMacOSXAppInit.c; + refType = 0; + }; + F55BC4EE02B2E09101DC9062 = { + isa = PBXFileReference; + name = tkMacOSXAppInit.c; + path = /Volumes/CodeBits/jingham/Tcl/Source/tk/macosx/tkMacOSXAppInit.c; + refType = 0; + }; F566083B0197283B01DC9062 = { fileReference = F5375548016C376E01DC9062; isa = PBXFileBreakpoint; - lineNumber = 208; + lineNumber = 214; state = 2; }; F566083C0197823801DC9062 = { @@ -229,7 +1712,7 @@ F58907BE018DCE8F01DC9062 = { fileReference = F5375548016C376E01DC9062; isa = PBXFileBreakpoint; - lineNumber = 190; + lineNumber = 196; state = 2; }; F58907C5018DD1C301DC9062 = { @@ -238,6 +1721,290 @@ lineNumber = 502; state = 2; }; + F5978FD602B3190701DC9062 = { + fileReference = F5375580016C389901DC9062; + isa = PBXFileBreakpoint; + lineNumber = 224; + state = 2; + }; + F5A439C0029B609C01DC9064 = { + fileReference = F5375548016C376E01DC9062; + isa = PBXFileBreakpoint; + lineNumber = 74; + state = 1; + }; + F5A439C2029B60ED01DC9064 = { + fileReference = F5375548016C376E01DC9062; + isa = PBXFileBreakpoint; + lineNumber = 155; + state = 1; + }; + F5A439CA029B620901DC9064 = { + fileReference = F5375548016C376E01DC9062; + isa = PBXFileBreakpoint; + lineNumber = 306; + state = 1; + }; + F5A439CE029B6B5501DC9064 = { + fRef = F537555C016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXMouseEvent.c: TkMacOSXProcessMouseEvent"; + rLen = 0; + rLoc = 6187; + rType = 0; + vrLen = 1476; + vrLoc = 5157; + }; + F5A439D0029B6B5501DC9064 = { + fRef = F5375567016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXWm.c: TkMacOSXMakeRealWindowExist"; + rLen = 15; + rLoc = 113034; + rType = 0; + vrLen = 695; + vrLoc = 112860; + }; + F5A439D1029B6B5501DC9064 = { + fRef = F5A439F3029B6B5601DC9064; + isa = PBXTextBookmark; + name = "CarbonEvents.h: 4483"; + rLen = 19; + rLoc = 173576; + rType = 0; + vrLen = 804; + vrLoc = 173125; + }; + F5A439D2029B6B5501DC9064 = { + fRef = F5375548016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXAppInit.c: Tcl_AppInit"; + rLen = 0; + rLoc = 9908; + rType = 0; + vrLen = 1370; + vrLoc = 8362; + }; + F5A439D3029B6B5501DC9064 = { + fRef = F5A439F4029B6B5601DC9064; + isa = PBXTextBookmark; + name = "MacWindows.h: 1410"; + rLen = 105; + rLoc = 57285; + rType = 0; + vrLen = 1155; + vrLoc = 56795; + }; + F5A439D4029B6B5501DC9064 = { + fRef = F5A439F5029B6B5601DC9064; + isa = PBXBookmark; + }; + F5A439D5029B6B5501DC9064 = { + fRef = F5A439F6029B6B5601DC9064; + isa = PBXBookmark; + }; + F5A439D6029B6B5501DC9064 = { + fRef = F5A439F7029B6B5601DC9064; + isa = PBXBookmark; + }; + F5A439D7029B6B5501DC9064 = { + fRef = F5A439F8029B6B5601DC9064; + isa = PBXBookmark; + }; + F5A439D9029B6B5501DC9064 = { + fRef = F5A439FA029B6B5601DC9064; + isa = PBXTextBookmark; + name = "tclDecls.h: 788"; + rLen = 7; + rLoc = 27156; + rType = 0; + vrLen = 1281; + vrLoc = 26408; + }; + F5A439DA029B6B5501DC9064 = { + fRef = F5375553016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXEvent.c: TkMacOSXProcessEvent"; + rLen = 25; + rLoc = 4656; + rType = 0; + vrLen = 1260; + vrLoc = 4407; + }; + F5A439DB029B6B5501DC9064 = { + fRef = F537555C016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXMouseEvent.c: TkMacOSXProcessMouseEvent"; + rLen = 0; + rLoc = 6037; + rType = 0; + vrLen = 1438; + vrLoc = 5075; + }; + F5A439DE029B6B5501DC9064 = { + fRef = F5375553016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXEvent.c: ReceiveAndProcessEvent"; + rLen = 0; + rLoc = 7098; + rType = 0; + vrLen = 1455; + vrLoc = 5920; + }; + F5A439DF029B6B5501DC9064 = { + fRef = F5375548016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXAppInit.c: Tcl_AppInit"; + rLen = 0; + rLoc = 9908; + rType = 0; + vrLen = 673; + vrLoc = 7806; + }; + F5A439E0029B6B5501DC9064 = { + fRef = F5375567016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXWm.c: TkMacOSXMakeRealWindowExist"; + rLen = 15; + rLoc = 113034; + rType = 0; + vrLen = 695; + vrLoc = 112860; + }; + F5A439E1029B6B5501DC9064 = { + fRef = F5A439FB029B6B5601DC9064; + isa = PBXTextBookmark; + name = "MacWindows.h: 1410"; + rLen = 0; + rLoc = 57304; + rType = 0; + vrLen = 659; + vrLoc = 56953; + }; + F5A439E2029B6B5501DC9064 = { + fRef = F5375548016C376E01DC9062; + isa = PBXTextBookmark; + name = "tkMacOSXAppInit.c: Tcl_AppInit"; + rLen = 0; + rLoc = 9908; + rType = 0; + vrLen = 1370; + vrLoc = 8362; + }; + F5A439E3029B6B5501DC9064 = { + fRef = F5A439EF029B6B5601DC9064; + isa = PBXTextBookmark; + name = "MacWindows.h: 1410"; + rLen = 105; + rLoc = 57285; + rType = 0; + vrLen = 1155; + vrLoc = 56795; + }; + F5A439E4029B6B5501DC9064 = { + fRef = F5A439F1029B6B5601DC9064; + isa = PBXBookmark; + }; + F5A439E5029B6B5501DC9064 = { + fRef = F5A439FD029B6B5601DC9064; + isa = PBXBookmark; + }; + F5A439E6029B6B5501DC9064 = { + fRef = F5A439FE029B6B5601DC9064; + isa = PBXBookmark; + }; + F5A439E7029B6B5501DC9064 = { + fRef = F5A439EE029B6B5601DC9064; + isa = PBXBookmark; + }; + F5A439E8029B6B5501DC9064 = { + fRef = F5A439F2029B6B5601DC9064; + isa = PBXBookmark; + }; + F5A439EE029B6B5601DC9064 = { + isa = PBXFileReference; + name = Carbon.html; + path = /Developer/Documentation/Carbon/Carbon.html; + refType = 0; + }; + F5A439EF029B6B5601DC9064 = { + isa = PBXFileReference; + name = MacWindows.h; + path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/MacWindows.h; + refType = 0; + }; + F5A439F1029B6B5601DC9064 = { + isa = PBXFileReference; + name = Carbon.html; + path = /Developer/Documentation/Carbon/Carbon.html; + refType = 0; + }; + F5A439F2029B6B5601DC9064 = { + isa = PBXFileReference; + name = carboneventmanager.html; + path = /Developer/Documentation/Carbon/oss/CarbonEventManager/carboneventmanager.html; + refType = 0; + }; + F5A439F3029B6B5601DC9064 = { + isa = PBXFileReference; + name = CarbonEvents.h; + path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/CarbonEvents.h; + refType = 0; + }; + F5A439F4029B6B5601DC9064 = { + isa = PBXFileReference; + name = MacWindows.h; + path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/MacWindows.h; + refType = 0; + }; + F5A439F5029B6B5601DC9064 = { + isa = PBXFileReference; + name = windowmanager.html; + path = /Developer/Documentation/Carbon/HumanInterfaceToolbox/WindowManager/windowmanager.html; + refType = 0; + }; + F5A439F6029B6B5601DC9064 = { + isa = PBXFileReference; + name = index.html; + path = /Developer/Documentation/Carbon/HumanInterfaceToolbox/WindowManager/Window_Manager/index.html; + refType = 0; + }; + F5A439F7029B6B5601DC9064 = { + isa = PBXFileReference; + name = Carbon.html; + path = /Developer/Documentation/Carbon/Carbon.html; + refType = 0; + }; + F5A439F8029B6B5601DC9064 = { + isa = PBXFileReference; + name = carboneventmanager.html; + path = /Developer/Documentation/Carbon/oss/CarbonEventManager/carboneventmanager.html; + refType = 0; + }; + F5A439FA029B6B5601DC9064 = { + isa = PBXFileReference; + name = tclDecls.h; + path = /Volumes/CodeBits/jingham/Tcl/Source/tcl/generic/tclDecls.h; + refType = 0; + }; + F5A439FB029B6B5601DC9064 = { + isa = PBXFileReference; + name = MacWindows.h; + path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/MacWindows.h; + refType = 0; + }; + F5A439FD029B6B5601DC9064 = { + isa = PBXFileReference; + name = windowmanager.html; + path = /Developer/Documentation/Carbon/HumanInterfaceToolbox/WindowManager/windowmanager.html; + refType = 0; + }; + F5A439FE029B6B5601DC9064 = { + isa = PBXFileReference; + name = index.html; + path = /Developer/Documentation/Carbon/HumanInterfaceToolbox/WindowManager/Window_Manager/index.html; + refType = 0; + }; F5A5146F01D05DC201DC9062 = { fileReference = F5375550016C376E01DC9062; isa = PBXFileBreakpoint; @@ -262,4 +2029,24 @@ lineNumber = 2584; state = 2; }; + F5BE671E029B6FEE01DC9064 = { + fRef = F5BE6723029B6FEE01DC9064; + isa = PBXBookmark; + }; + F5BE671F029B6FEE01DC9064 = { + fRef = F5BE6722029B6FEE01DC9064; + isa = PBXBookmark; + }; + F5BE6722029B6FEE01DC9064 = { + isa = PBXFileReference; + name = index.html; + path = /Developer/Documentation/Carbon/oss/CarbonEventManager/Carbon_Event_Manager_Ref/index.html; + refType = 0; + }; + F5BE6723029B6FEE01DC9064 = { + isa = PBXFileReference; + name = index.html; + path = /Developer/Documentation/Carbon/oss/CarbonEventManager/Carbon_Event_Manager_Ref/index.html; + refType = 0; + }; } diff --git a/macosx/Wish.pbproj/project.pbxproj b/macosx/Wish.pbproj/project.pbxproj index ae96ae8..e672a37 100644 --- a/macosx/Wish.pbproj/project.pbxproj +++ b/macosx/Wish.pbproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 34; + objectVersion = 38; objects = { F50D96120196176E01DC9062 = { isa = PBXFrameworkReference; @@ -45,7 +45,7 @@ F51D9048018149FD01DC9062, ); isa = PBXCopyFilesBuildPhase; - name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; }; F51D9040018149FD01DC9062 = { fileRef = F53755CE016C389901DC9062; @@ -242,6 +242,7 @@ F53755B0016C389901DC9062, F53755B1016C389901DC9062, F53755B2016C389901DC9062, + F55BC46802B2D38B01DC9062, F53755B3016C389901DC9062, F53755B4016C389901DC9062, F53755B5016C389901DC9062, @@ -1342,7 +1343,7 @@ INSTALL_PATH = /Library/Frameworks; LIBRARY_SEARCH_PATHS = ""; OPTIMIZATION_CFLAGS = "-O0"; - OTHER_CFLAGS = "-DMAC_OSX_TCL -DMAC_OSX_TK -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DTCL_THREADS=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_TMPNAM=1 -DHAVE_WAITPID=1 -DNO_VALUES_H=1 -DNO_DLFCN_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_TERMIOS=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DNEED_MATHERR=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1"; + OTHER_CFLAGS = "-DMAC_OSX_TCL -DMAC_OSX_TK -DTCL_DEFAULT_ENCODING=\\\"utf-8\\\" -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DTCL_THREADS=1 -DUSE_THREAD_ALLOC=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DTCL_WIDE_INT_TYPE=\"long long\" -DWORDS_BIGENDIAN=1 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_TMPNAM=1 -DHAVE_WAITPID=1 -DNO_VALUES_H=1 -DNO_DLFCN_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1-DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DNEED_MATHERR=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1"; OTHER_LDFLAGS = "-seg1addr 0x400000"; OTHER_LIBTOOL_FLAGS = ""; OTHER_REZFLAGS = "-i \"../../tcl/generic\" -i \"../generic\""; @@ -1352,6 +1353,7 @@ TK_MAJOR_VERSION = 8; TK_MINOR_VERSION = 4; TK_PATCH_LEVEL = a4; + USE_GCC3_PFE_SUPPORT = NO; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = framework; }; @@ -1451,7 +1453,7 @@ Copyright Apple Computer, Inc 2001</string> F537569C016C3F1001DC9062, ); isa = PBXHeadersBuildPhase; - name = Headers; + runOnlyForDeploymentPostprocessing = 0; }; F53755E1016C38D301DC9062 = { buildActionMask = 2147483647; @@ -1460,7 +1462,7 @@ Copyright Apple Computer, Inc 2001</string> F5C8865D017D625C01DC9062, ); isa = PBXResourcesBuildPhase; - name = "Bundle Resources"; + runOnlyForDeploymentPostprocessing = 0; }; F53755E2016C38D301DC9062 = { buildActionMask = 2147483647; @@ -1572,9 +1574,10 @@ Copyright Apple Computer, Inc 2001</string> F537567A016C3A6D01DC9062, F537567B016C3A6D01DC9062, F537569E016C49C301DC9062, + F55BC46902B2D38B01DC9062, ); isa = PBXSourcesBuildPhase; - name = Sources; + runOnlyForDeploymentPostprocessing = 0; }; F53755E3016C38D301DC9062 = { buildActionMask = 2147483647; @@ -1584,7 +1587,7 @@ Copyright Apple Computer, Inc 2001</string> F50D96130196176E01DC9062, ); isa = PBXFrameworksBuildPhase; - name = "Frameworks & Libraries"; + runOnlyForDeploymentPostprocessing = 0; }; F53755E4016C38D301DC9062 = { buildActionMask = 2147483647; @@ -1595,7 +1598,7 @@ Copyright Apple Computer, Inc 2001</string> F5375682016C3ADB01DC9062, ); isa = PBXRezBuildPhase; - name = "ResourceManager Resources"; + runOnlyForDeploymentPostprocessing = 0; }; F53755E5016C390401DC9062 = { fileRef = F5375569016C37A601DC9062; @@ -2714,11 +2717,12 @@ Copyright Apple Computer, Inc 2001</string> HEADER_SEARCH_PATHS = "../../tcl/generic ../../tcl/unix ../generic ../xlib"; LIBRARY_SEARCH_PATHS = ""; OPTIMIZATION_CFLAGS = "-O0"; - OTHER_CFLAGS = "-DMAC_OSX_TCL -DMAC_OSX_TK -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DTCL_THREADS=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_TMPNAM=1 -DHAVE_WAITPID=1 -DNO_VALUES_H=1 -DNO_DLFCN_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_TERMIOS=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DNEED_MATHERR=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1"; + OTHER_CFLAGS = "-DMAC_OSX_TCL -DMAC_OSX_TK -DTCL_DEFAULT_ENCODING=\\\"utf-8\\\" -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DTCL_THREADS=1 -DUSE_THREAD_ALLOC=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DTCL_WIDE_INT_TYPE=\"long long\" -DWORDS_BIGENDIAN=1 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_TMPNAM=1 -DHAVE_WAITPID=1 -DNO_VALUES_H=1 -DNO_DLFCN_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1-DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DNEED_MATHERR=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1"; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = "-i \"../../tcl/generic\" -i \"../generic\""; PRODUCT_NAME = "Wish Shell"; SECTORDER_FLAGS = ""; + USE_GCC3_PFE_SUPPORT = NO; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = app; }; @@ -2772,7 +2776,7 @@ Copyright Apple Computer, Inc 2001</string> F53756AE016C4E1D01DC9062, ); isa = PBXHeadersBuildPhase; - name = Headers; + runOnlyForDeploymentPostprocessing = 0; }; F53756A2016C4DD401DC9062 = { buildActionMask = 2147483647; @@ -2782,7 +2786,7 @@ Copyright Apple Computer, Inc 2001</string> F5C8865F017D625C01DC9062, ); isa = PBXResourcesBuildPhase; - name = "Bundle Resources"; + runOnlyForDeploymentPostprocessing = 0; }; F53756A3016C4DD401DC9062 = { fileRef = F537553B016C376E01DC9062; @@ -2796,7 +2800,7 @@ Copyright Apple Computer, Inc 2001</string> F53756A5016C4DD401DC9062, ); isa = PBXSourcesBuildPhase; - name = Sources; + runOnlyForDeploymentPostprocessing = 0; }; F53756A5016C4DD401DC9062 = { fileRef = F5375548016C376E01DC9062; @@ -2813,7 +2817,7 @@ Copyright Apple Computer, Inc 2001</string> F50D96140196176E01DC9062, ); isa = PBXFrameworksBuildPhase; - name = "Frameworks & Libraries"; + runOnlyForDeploymentPostprocessing = 0; }; F53756A7016C4DD401DC9062 = { fileRef = F53755DE016C38D201DC9062; @@ -2832,7 +2836,7 @@ Copyright Apple Computer, Inc 2001</string> files = ( ); isa = PBXRezBuildPhase; - name = "ResourceManager Resources"; + runOnlyForDeploymentPostprocessing = 0; }; F53756AC016C4E1D01DC9062 = { fileRef = F537556B016C37A601DC9062; @@ -2856,6 +2860,30 @@ Copyright Apple Computer, Inc 2001</string> isa = PBXTargetDependency; target = F53755DF016C38D201DC9062; }; + F55BC46802B2D38B01DC9062 = { + isa = PBXFileReference; + name = tkPanedWindow.c; + path = ../generic/tkPanedWindow.c; + refType = 2; + }; + F55BC46902B2D38B01DC9062 = { + fileRef = F55BC46802B2D38B01DC9062; + isa = PBXBuildFile; + settings = { + }; + }; + F55BC46A02B2D3F301DC9062 = { + isa = PBXFileReference; + name = panedwindow.tcl; + path = ../library/panedwindow.tcl; + refType = 2; + }; + F55BC46B02B2D3F301DC9062 = { + fileRef = F55BC46A02B2D3F301DC9062; + isa = PBXBuildFile; + settings = { + }; + }; F56570CF01722FA201DC9062 = { buildActionMask = 2147483647; files = ( @@ -2863,9 +2891,9 @@ Copyright Apple Computer, Inc 2001</string> generatedFileNames = ( ); isa = PBXShellScriptBuildPhase; - name = "Shell Script"; neededFileNames = ( ); + runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "rm -rf \"${SYMROOT}/${PRODUCT_NAME}.${WRAPPER_EXTENSION}/Versions/A\""; }; @@ -2903,6 +2931,7 @@ Copyright Apple Computer, Inc 2001</string> F5B1FC18016FFE3501DC9062, F5B1FC19016FFE3501DC9062, F5B1FC1A016FFE3501DC9062, + F55BC46B02B2D3F301DC9062, F5B1FC1B016FFE3501DC9062, F5B1FC1C016FFE3501DC9062, F5B1FC1D016FFE3501DC9062, @@ -2917,7 +2946,7 @@ Copyright Apple Computer, Inc 2001</string> F5B1FC26016FFE3501DC9062, ); isa = PBXCopyFilesBuildPhase; - name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; }; F5B1FC09016FFE3501DC9062 = { fileRef = F5DF0928016CD3F901DC9062; @@ -3100,15 +3129,15 @@ Copyright Apple Computer, Inc 2001</string> }; }; F5C1D51901B88F9A01DC9062 = { - buildActionMask = 2147483647; + buildActionMask = 8; files = ( ); generatedFileNames = ( ); isa = PBXShellScriptBuildPhase; - name = "Shell Script"; neededFileNames = ( ); + runOnlyForDeploymentPostprocessing = 1; shellPath = /bin/sh; shellScript = "source buildConfig"; }; @@ -3177,6 +3206,7 @@ Copyright Apple Computer, Inc 2001</string> F5DF0937016CD3F901DC9062, F5DF0938016CD3F901DC9062, F5DF0939016CD3F901DC9062, + F55BC46A02B2D3F301DC9062, F5DF093A016CD3F901DC9062, F5DF093B016CD3F901DC9062, F5DF093C016CD3F901DC9062, @@ -3231,6 +3261,7 @@ Copyright Apple Computer, Inc 2001</string> refType = 2; }; F5DF092E016CD3F901DC9062 = { + includeInIndex = 0; isa = PBXFolderReference; name = demos; path = ../library/demos; @@ -3255,6 +3286,7 @@ Copyright Apple Computer, Inc 2001</string> refType = 2; }; F5DF0932016CD3F901DC9062 = { + includeInIndex = 0; isa = PBXFolderReference; name = images; path = ../library/images; @@ -3279,6 +3311,7 @@ Copyright Apple Computer, Inc 2001</string> refType = 2; }; F5DF0936016CD3F901DC9062 = { + includeInIndex = 0; isa = PBXFolderReference; name = msgs; path = ../library/msgs; @@ -3381,9 +3414,9 @@ Copyright Apple Computer, Inc 2001</string> generatedFileNames = ( ); isa = PBXShellScriptBuildPhase; - name = "Shell Script"; neededFileNames = ( ); + runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = pwd; }; diff --git a/macosx/tkMacOSXAppInit.c b/macosx/tkMacOSXAppInit.c index 84e45e7..c940cf7 100644 --- a/macosx/tkMacOSXAppInit.c +++ b/macosx/tkMacOSXAppInit.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacOSXAppInit.c,v 1.1.2.5 2002/01/22 01:28:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacOSXAppInit.c,v 1.1.2.6 2002/06/10 05:38:26 wolfsuit Exp $ */ #include <pthread.h> #include "tk.h" @@ -67,6 +67,13 @@ extern int Tktest_Init _ANSI_ARGS_((Tcl_Interp *interp)); *---------------------------------------------------------------------- */ +OSStatus +myWindowHandler (EventHandlerCallRef inHandlerCallRef, + EventRef inEvent, void *inUserData) +{ + return noErr; +} + int main(argc, argv) int argc; /* Number of command-line arguments. */ @@ -145,7 +152,6 @@ main(argc, argv) } #endif - textEncoding=GetApplicationTextEncoding(); /* @@ -155,7 +161,7 @@ main(argc, argv) Tk_Main(argc,argv,TK_LOCAL_APPINIT); return 0; /* Needed only to prevent compiler warning. */ } - + /* *---------------------------------------------------------------------- * @@ -289,9 +295,26 @@ Tcl_AppInit(interp) Tcl_SetVar(interp, "tcl_rcFileName", "~/.wishrc", TCL_GLOBAL_ONLY); + { + Rect windowRect = {50, 50, 150, 150}; + WindowRef windowRef; + EventTargetRef target; + struct EventTypeSpec myEventSpec = {kEventClassMouse, kEventMouseDown}; + Boolean isValid; + OSStatus result; + + CreateNewWindow (kDocumentWindowClass, kWindowStandardHandlerAttribute, + &windowRect, &windowRef); + result = InstallStandardEventHandler (GetWindowEventTarget (windowRef)); + result = InstallWindowEventHandler (windowRef, NewEventHandlerUPP (myWindowHandler), + 1, &myEventSpec, NULL, NULL); + TransitionWindow(windowRef, kWindowZoomTransitionEffect, kWindowShowTransitionAction, + NULL); + + } + return TCL_OK; error: return TCL_ERROR; } - diff --git a/macosx/tkMacOSXDefault.h b/macosx/tkMacOSXDefault.h index 9faf5ac..8a7c003 100644 --- a/macosx/tkMacOSXDefault.h +++ b/macosx/tkMacOSXDefault.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacOSXDefault.h,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacOSXDefault.h,v 1.1.2.3 2002/06/10 05:38:26 wolfsuit Exp $ */ #ifndef _TKMACDEFAULT @@ -361,6 +361,39 @@ #define DEF_MESSAGE_TEXT "" #define DEF_MESSAGE_TEXT_VARIABLE "" #define DEF_MESSAGE_WIDTH "0" +/* + * Defaults for panedwindows + */ + +#define DEF_PANEDWINDOW_BG_COLOR NORMAL_BG +#define DEF_PANEDWINDOW_BG_MONO WHITE +#define DEF_PANEDWINDOW_BORDERWIDTH "2" +#define DEF_PANEDWINDOW_CURSOR "" +#define DEF_PANEDWINDOW_HANDLEPAD "8" +#define DEF_PANEDWINDOW_HANDLESIZE "8" +#define DEF_PANEDWINDOW_HEIGHT "" +#define DEF_PANEDWINDOW_OPAQUERESIZE "0" +#define DEF_PANEDWINDOW_ORIENT "horizontal" +#define DEF_PANEDWINDOW_RELIEF "flat" +#define DEF_PANEDWINDOW_SASHCURSOR "" +#define DEF_PANEDWINDOW_SASHPAD "2" +#define DEF_PANEDWINDOW_SASHRELIEF "raised" +#define DEF_PANEDWINDOW_SASHWIDTH "2" +#define DEF_PANEDWINDOW_SHOWHANDLE "1" +#define DEF_PANEDWINDOW_WIDTH "" + +/* + * Defaults for panedwindow panes + */ + +#define DEF_PANEDWINDOW_PANE_AFTER "" +#define DEF_PANEDWINDOW_PANE_BEFORE "" +#define DEF_PANEDWINDOW_PANE_HEIGHT "" +#define DEF_PANEDWINDOW_PANE_MINSIZE "0" +#define DEF_PANEDWINDOW_PANE_PADX "0" +#define DEF_PANEDWINDOW_PANE_PADY "0" +#define DEF_PANEDWINDOW_PANE_STICKY "nsew" +#define DEF_PANEDWINDOW_PANE_WIDTH "" /* * Defaults for scales: diff --git a/macosx/tkMacOSXEvent.c b/macosx/tkMacOSXEvent.c index fe22933..a27910a 100644 --- a/macosx/tkMacOSXEvent.c +++ b/macosx/tkMacOSXEvent.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacOSXEvent.c,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacOSXEvent.c,v 1.1.2.3 2002/06/10 05:38:26 wolfsuit Exp $ */ #include <stdio.h> @@ -264,7 +264,7 @@ ReceiveAndProcessEvent() } err= SendEventToEventTarget(macEvent.eventRef,targetRef); - if (err != noErr) { + if (err != noErr /* && err != eventNotHandledErr */) { fprintf(stderr, "RCNE SendEventToEventTarget (%s) failed, %d\n", CarbonEventToAscii(macEvent.eventRef,buf ),err); diff --git a/macosx/tkMacOSXKeyEvent.c b/macosx/tkMacOSXKeyEvent.c index f72873a..aba93ea 100644 --- a/macosx/tkMacOSXKeyEvent.c +++ b/macosx/tkMacOSXKeyEvent.c @@ -379,4 +379,31 @@ TkpSetCapture( winPtr = winPtr->parentPtr; } gGrabWinPtr = (Tk_Window) winPtr; -}
\ No newline at end of file +} + +/* + *---------------------------------------------------------------------- + * + * Tk_SetCaretPos -- + * + * This enables correct placement of the XIM caret. This is called + * by widgets to indicate their cursor placement, and the caret + * location is used by TkpGetString to place the XIM caret. + * + * Results: + * None + * + * Side effects: + * None + * + *---------------------------------------------------------------------- + */ + +void +Tk_SetCaretPos(tkwin, x, y, height) + Tk_Window tkwin; + int x; + int y; + int height; +{ +} diff --git a/macosx/tkMacOSXMouseEvent.c b/macosx/tkMacOSXMouseEvent.c index 71c4555..769472c 100644 --- a/macosx/tkMacOSXMouseEvent.c +++ b/macosx/tkMacOSXMouseEvent.c @@ -171,7 +171,11 @@ TkMacOSXProcessMouseEvent(TkMacOSXEvent *eventPtr, MacEventStatus * statusPtr) medPtr->windowPart= FindWindow(where, &medPtr->whichWin); window = TkMacOSXGetXWindow(medPtr->whichWin); - + if (medPtr->whichWin != NULL && window == None) { + statusPtr->handledByTk = 0; + return 0; + } + frontWindow = FrontWindow(); medPtr->activeNonFloating = ActiveNonFloatingWindow(); diff --git a/macosx/tkMacOSXXStubs.c b/macosx/tkMacOSXXStubs.c index ea7eaf0..355960c 100644 --- a/macosx/tkMacOSXXStubs.c +++ b/macosx/tkMacOSXXStubs.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacOSXXStubs.c,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacOSXXStubs.c,v 1.1.2.3 2002/06/10 05:38:26 wolfsuit Exp $ */ #include "tkInt.h" @@ -140,6 +140,13 @@ TkpOpenDisplay( screen->root_visual->map_entries = 2 ^ 8; gMacDisplay = (TkDisplay *) ckalloc(sizeof(TkDisplay)); + + /* + * This is the quickest way to make sure that all the *Init + * flags get properly initialized + */ + + bzero (gMacDisplay, sizeof (TkDisplay)); gMacDisplay->display = display; return gMacDisplay; } diff --git a/tests/all.tcl b/tests/all.tcl index 5e77969..0de8081 100644 --- a/tests/all.tcl +++ b/tests/all.tcl @@ -5,9 +5,11 @@ # in this directory. # # Copyright (c) 1998-1999 by Scriptics Corporation. -# All rights reserved. +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: all.tcl,v 1.4 1999/04/21 21:53:29 rjohnson Exp $ +# RCS: @(#) $Id: all.tcl,v 1.4.18.1 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -63,16 +65,3 @@ foreach file [lsort $fileList] { puts stdout "\nTests ended at [eval $timeCmd]" ::tcltest::cleanupTests 1 return - - - - - - - - - - - - - diff --git a/tests/bind.test b/tests/bind.test index ead7e2b..dc0a474 100644 --- a/tests/bind.test +++ b/tests/bind.test @@ -7,7 +7,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: bind.test,v 1.9.2.1 2001/10/15 09:22:00 wolfsuit Exp $ +# RCS: @(#) $Id: bind.test,v 1.9.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -1945,7 +1945,7 @@ test bind-22.2 {HandleEventGenerate} { } {1 {bad window name/identifier "zzz"}} test bind-22.3 {HandleEventGenerate} { list [catch {event gen 47 <Control-v>} msg] $msg -} {1 {window id "47" doesn't exist in this application}} +} {1 {bad window name/identifier "47"}} test bind-22.4 {HandleEventGenerate} { setup bind .b.f <Button> {set x "%s %b"} @@ -2046,7 +2046,11 @@ test bind-22.16 {HandleEventGenerate} { test bind-22.17 {HandleEventGenerate} { list [catch {event gen . <Button> -when xyz} msg] $msg } {1 {bad -when value "xyz": must be now, head, mark, or tail}} -set i 18 +test bind-22.18 {HandleEventGenerate} { + # Bug 411307 + list [catch {event gen . <a> -root 98765} msg] $msg +} {1 {bad window name/identifier "98765"}} +set i 19 foreach check { {<Configure> %a {-above .xyz} {{1 {bad window path name ".xyz"}}}} {<Configure> %a {-above .b} {[winfo id .b]}} @@ -2673,22 +2677,8 @@ test bind-31.2 {MouseWheel events} { set x } {240 10 30} - destroy .b # cleanup ::tcltest::cleanupTests return - - - - - - - - - - - - - diff --git a/tests/canvas.test b/tests/canvas.test index d2e0e51..b0b1d1c 100644 --- a/tests/canvas.test +++ b/tests/canvas.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-2000 Ajuba Solutions. # All rights reserved. # -# RCS: @(#) $Id: canvas.test,v 1.13.2.1 2001/10/15 09:22:00 wolfsuit Exp $ +# RCS: @(#) $Id: canvas.test,v 1.13.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -366,8 +366,6 @@ test canvas-11.1 {canvas poly fill check, bug 5783} { .c create polygon 0 0 100 100 200 50 \ -fill {} -stipple gray50 -outline black } 1 -<<<<<<< canvas.test -======= test canvas-11.2 {canvas poly overlap fill check, bug 226357} { destroy .c pack [canvas .c] @@ -431,7 +429,6 @@ test canvas-13.1 {canvas delete during event, SF bug-228024} { } set ::x } okokokokokokokokokokokokokokokokokokokokokokokokokokokokokok ->>>>>>> 1.13 # cleanup ::tcltest::cleanupTests diff --git a/tests/embed.test b/tests/embed.test index f169247..d0eaf59 100644 --- a/tests/embed.test +++ b/tests/embed.test @@ -4,7 +4,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: embed.test,v 1.1.2.1 2002/06/10 05:08:00 wolfsuit Exp $ +# RCS: @(#) $Id: embed.test,v 1.1.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] diff --git a/tests/entry.test b/tests/entry.test index c4a7432..33563fa 100644 --- a/tests/entry.test +++ b/tests/entry.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: entry.test,v 1.11.2.1 2001/10/15 09:22:00 wolfsuit Exp $ +# RCS: @(#) $Id: entry.test,v 1.11.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -1506,9 +1506,9 @@ proc doval {W d i P s S v V} { set ::vVals [list $W $d $i $P $s $S $v $V] return 0 } -.e configure -validate all test entry-19.18 {entry widget validation} { + .e configure -validate all set ::e nextdata list [.e cget -validate] $::vVals } {none {.e -1 -1 nextdata newdata {} all forced}} @@ -1518,23 +1518,22 @@ proc doval {W d i P s S v V} { set ::e mydata return 1 } -.e configure -validate all ## This sets validate to none because it shows that we prevent a possible ## loop condition in the validation, when the entry textvar is also set test entry-19.19 {entry widget validation} { + .e configure -validate all .e validate list [.e cget -validate] [.e get] $::vVals } {none mydata {.e -1 -1 nextdata nextdata {} all forced}} -.e configure -validate all - ## This leaves validate alone because we trigger validation through the ## textvar (a write trace), and the write during validation triggers ## nothing (by definition of avoiding loops on var traces). This is ## one of those "dangerous" conditions where the user will have a ## different value in the entry widget shown as is in the textvar. test entry-19.20 {entry widget validation} { + .e configure -validate all set ::e testdata list [.e cget -validate] [.e get] $::e $::vVals } {all testdata mydata {.e -1 -1 testdata mydata {} all forced}} @@ -1546,6 +1545,53 @@ catch {unset ::e ::vVals} ## End validation tests ## +test entry-20.1 {widget deletion while active} { + destroy .e + entry .e -validate all \ + -validatecommand { destroy %W ; return 1 } \ + -invalidcommand bell + update + .e insert 0 abc + winfo exists .e +} 0 +test entry-20.2 {widget deletion while active} { + destroy .e + entry .e -validate all \ + -validatecommand { return 0 } \ + -invalidcommand { destroy %W } + .e insert 0 abc + winfo exists .e +} 0 +test entry-20.3 {widget deletion while active} { + destroy .e + entry .e -validate all \ + -validatecommand { rename .e {} ; return 1 } + .e insert 0 abc + winfo exists .e +} 0 +test entry-20.4 {widget deletion while active} { + destroy .e + entry .e -validate all \ + -validatecommand { return 0 } \ + -invalidcommand { rename .e {} } + .e insert 0 abc + winfo exists .e +} 0 +test entry-20.5 {widget deletion while active} { + destroy .e + entry .e -validatecommand { destroy .e ; return 0 } + .e validate + winfo exists .e +} 0 +test entry-20.6 {widget deletion while active} { + destroy .e + pack [entry .e] + update + .e config -xscrollcommand { destroy .e } + update idle + winfo exists .e +} 0 + # XXX Still need to write tests for EntryBlinkProc, EntryFocusProc, # and EntryTextVarProc. diff --git a/tests/event.test b/tests/event.test index 5cfe669..205fb21 100644 --- a/tests/event.test +++ b/tests/event.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: event.test,v 1.6.2.2 2002/02/05 02:25:17 wolfsuit Exp $ +# RCS: @(#) $Id: event.test,v 1.6.2.3 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -22,6 +22,159 @@ raise . # a few of the procedures in tkEvent.c. Please add more tests whenever # possible. + + +# Setup table used to query key events. + +proc _init_keypress_lookup { } { + global keypress_lookup + + scan A %c start + scan Z %c finish + + for {set i $start} {$i <= $finish} {incr i} { + set l [format %c $i] + set keypress_lookup($l) $l + } + + scan a %c start + scan z %c finish + + for {set i $start} {$i <= $finish} {incr i} { + set l [format %c $i] + set keypress_lookup($l) $l + } + + scan 0 %c start + scan 9 %c finish + + for {set i $start} {$i <= $finish} {incr i} { + set l [format %c $i] + set keypress_lookup($l) $l + } + + array set keypress_lookup [list \ + " " space \ + ! exclam \ + \" quotedbl \ + \# numbersign \ + \$ dollar \ + % percent \ + & ampersand \ + ( parenleft \ + ) parenright \ + * asterisk \ + + plus \ + , comma \ + - minus \ + . period \ + / slash \ + : colon \ + \; semicolon \ + < less \ + = equal \ + > greater \ + ? question \ + @ at \ + \[ bracketleft \ + \\ backslash \ + \] bracketright \ + ^ asciicircum \ + _ underscore \ + \{ braceleft \ + | bar \ + \} braceright \ + ~ asciitilde \ + ' apostrophe \ + "\n" Return] +} + + +# Lookup an event in the keypress table. +# For example: +# Q -> Q +# . -> period +# / -> slash +# Delete -> Delete +# Escape -> Escape + +proc _keypress_lookup { char } { + global keypress_lookup + + if {! [info exists keypress_lookup]} { + _init_keypress_lookup + } + + if {$char == ""} { + error "empty char" + } + + if {[info exists keypress_lookup($char)]} { + return $keypress_lookup($char) + } else { + return $char + } +} + + +# Lookup and generate a pair of KeyPress and KeyRelease events + +proc _keypress { win key } { + set keysym [_keypress_lookup $key] + + event generate $win <KeyPress-$keysym> + _pause 50 + event generate $win <KeyRelease-$keysym> + _pause 50 +} + +# Call _keypress for each character in the given string + +proc _keypress_string { win string } { + foreach letter [split $string ""] { + _keypress $win $letter + } +} + +# Delay script execution for a given amount of time + +proc _pause { {msecs 1000} } { + global _pause + + if {! [info exists _pause(number)]} { + set _pause(number) 0 + } + + set num [incr _pause(number)] + set _pause($num) 0 + + after $msecs "set _pause($num) 1" + vwait _pause($num) + unset _pause($num) +} + +# Helper proc to convert index to x y position + +proc _text_ind_to_x_y { text ind } { + foreach {x1 y1 width height} [$text bbox $ind] break + set middle_y [expr {$y1 + ($height / 2)}] + return [list $x1 $middle_y] +} + +# Return selection only if owned by the given widget + +proc _get_selection { widget } { + if {[string compare $widget [selection own]] != 0} { + return "" + } + if {[catch {selection get} sel]} { + return "" + } + return $sel +} + +# Begining of the actual tests + test event-1.1 {Tk_HandleEvent procedure, filter events for dead windows} { button .b -text Test pack .b @@ -51,13 +204,180 @@ test event-1.2 {event generate <Alt-z>} { destroy .e set ::event12result } 1 -# cleanup -::tcltest::cleanupTests -return +test event-keypress-1.1 { type into entry widget and hit Return } { + destroy .t + set t [toplevel .t] + set e [entry $t.e] + pack $e + set return_binding 0 + bind $e <Return> {set return_binding 1} + tkwait visibility $e + focus -force $e + _keypress_string $e HELLO\n + list [$e get] $return_binding +} {HELLO 1} + + +test event-keypress-1.2 { type into entry widget and then delete some text } { + destroy .t + set t [toplevel .t] + set e [entry $t.e] + pack $e + tkwait visibility $e + focus -force $e + _keypress_string $e MELLO + _keypress $e BackSpace + _keypress $e BackSpace + $e get +} MEL + +test event-keypress-1.3 { type into entry widget, triple click, + hit Delete key, and then type some more } { + destroy .t + set t [toplevel .t] + set e [entry $t.e] + pack $e + tkwait visibility $e + focus -force $e + _keypress_string $e JUMP + + set result [$e get] + + event generate $e <Enter> + for {set i 0} {$i < 3} {incr i} { + _pause 100 + event generate $e <ButtonPress-1> + _pause 100 + event generate $e <ButtonRelease-1> + } + + _keypress $e Delete + _keypress_string $e UP + lappend result [$e get] +} {JUMP UP} + + +test event-keypress-1.4 { type into text widget and hit Return } { + destroy .t + set t [toplevel .t] + set e [text $t.e] + pack $e + set return_binding 0 + bind $e <Return> {set return_binding 1} + tkwait visibility $e + focus -force $e + _keypress_string $e HELLO\n + list [$e get 1.0 end] $return_binding +} [list "HELLO\n\n" 1] + +test event-keypress-1.5 { type into text widget and then delete some text } { + destroy .t + set t [toplevel .t] + set e [text $t.e] + pack $e + tkwait visibility $e + focus -force $e + _keypress_string $e MELLO + _keypress $e BackSpace + _keypress $e BackSpace + $e get 1.0 1.end +} MEL + +test event-keypress-1.6 { type into text widget, triple click, + hit Delete key, and then type some more } { + destroy .t + set t [toplevel .t] + set e [text $t.e] + pack $e + tkwait visibility $e + focus -force $e + _keypress_string $e JUMP + + set result [$e get 1.0 1.end] + + event generate $e <Enter> + for {set i 0} {$i < 3} {incr i} { + _pause 100 + event generate $e <ButtonPress-1> + _pause 100 + event generate $e <ButtonRelease-1> + } + + _keypress $e Delete + _keypress_string $e UP + lappend result [$e get 1.0 1.end] +} {JUMP UP} + + + +test event-click-drag-1.1 { click and drag in a text widget, this + tests tkTextSelectTo in text.tcl } { + destroy .t + set t [toplevel .t] + set e [text $t.e] + pack $e + tkwait visibility $e + focus -force $e + _keypress_string $e "A Tcl/Tk selection test!" + set anchor 1.6 + set selend 1.18 + + set result [list] + lappend result [$e get 1.0 1.end] + + # Get the x,y coords of the second T in "Tcl/Tk" + foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break + + # Click down to set the insert cursor position + event generate $e <Enter> + event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y + + # Save the position of the insert cursor + lappend result [$e index insert] + + # Now drag until selend is highlighted, then click up + + set current $anchor + while {[$e compare $current <= $selend]} { + foreach {current_x current_y} [_text_ind_to_x_y $e $current] break + event generate $e <B1-Motion> -x $current_x -y $current_y + set current [$e index [list $current + 1 char]] + _pause 50 + } + + event generate $e <ButtonRelease-1> -x $current_x -y $current_y + _pause 200 + + # Save the position of the insert cursor + lappend result [$e index insert] + + # Save the highlighted text + lappend result [_get_selection $e] + + # Now click and click and drag to the left, over "Tcl/Tk selection" + + event generate $e <ButtonPress-1> -x $current_x -y $current_y + + while {[$e compare $current >= [list $anchor - 4 char]]} { + foreach {current_x current_y} [_text_ind_to_x_y $e $current] break + event generate $e <B1-Motion> -x $current_x -y $current_y + set current [$e index [list $current - 1 char]] + _pause 50 + } + + event generate $e <ButtonRelease-1> -x $current_x -y $current_y + _pause 200 + + # Save the position of the insert cursor + lappend result [$e index insert] + + # Save the highlighted text + lappend result [_get_selection $e] +} {{A Tcl/Tk selection test!} 1.6 1.18 {Tk selection} 1.2 {Tcl/Tk selection}} @@ -74,8 +394,15 @@ test event-click-drag-1.2 { click and drag in an entry widget, this set anchor 6 set selend 18 + set result [list] + lappend result [$e get] + # Get the x,y coords of the second T in "Tcl/Tk" + foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break + # Click down to set the insert cursor position + event generate $e <Enter> + event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y # Save the position of the insert cursor lappend result [$e index insert] @@ -97,7 +424,7 @@ test event-click-drag-1.2 { click and drag in an entry widget, this lappend result [$e index insert] # Save the highlighted text - lappend result [selection get] + lappend result [_get_selection $e] # Now click and click and drag to the left, over "Tcl/Tk selection" @@ -117,12 +444,213 @@ test event-click-drag-1.2 { click and drag in an entry widget, this lappend result [$e index insert] # Save the highlighted text - lappend result [selection get] + lappend result [_get_selection $e] } {{A Tcl/Tk selection!} 6 18 {Tk selection} 2 {Tcl/Tk selection}} +test event-double-click-drag-1.1 { click down, click up, click down again, + then drag in a text widget } { + destroy .t + set t [toplevel .t] + set e [text $t.e] + pack $e + tkwait visibility $e + focus -force $e + _keypress_string $e "Word select test" + set anchor 1.8 + + # Get the x,y coords of the second e in "select" + foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break + + # Click down, release, then click down again + event generate $e <Enter> + event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y + _pause 50 + event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y + _pause 50 + event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y + _pause 50 + + # Save the highlighted text + set result [list] + lappend result [_get_selection $e] + + # Insert cursor should be at end of "select" + lappend result [$e index insert] + + # Move mouse one character to the left + set current [$e index [list $anchor - 1 char]] + foreach {current_x current_y} [_text_ind_to_x_y $e $current] break + + event generate $e <B1-Motion> -x $current_x -y $current_y + _pause 50 + + # Insert cursor should be before the l in "select" + lappend result [$e index insert] + + # Selection should still be the word "select" + lappend result [_get_selection $e] + + # Move mouse to the space before the word "select" + set current [$e index [list $current - 3 char]] + + foreach {current_x current_y} [_text_ind_to_x_y $e $current] break + event generate $e <B1-Motion> -x $current_x -y $current_y + _pause 200 + + lappend result [$e index insert] + lappend result [_get_selection $e] + + # Move mouse to the r in "Word" + set current 1.2 + foreach {current_x current_y} [_text_ind_to_x_y $e $current] break + + event generate $e <B1-Motion> -x $current_x -y $current_y + _pause 50 + + # Selection should now be "Word select" + lappend result [_get_selection $e] + + # Insert cursor should be before the r in "Word" + lappend result [$e index insert] + + set result +} {select 1.11 1.7 select 1.4 { select} {Word select} 1.2} + + + +test event-double-click-drag-1.2 { click down, click up, click down again, + then drag in an entry widget } { + destroy .t + set t [toplevel .t] + set e [entry $t.e] + pack $e + tkwait visibility $e + focus -force $e + _keypress_string $e "Word select test" + + set anchor 8 + + # Get the x,y coords of the second e in "select" + foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break + + # Click down, release, then click down again + event generate $e <Enter> + event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y + _pause 50 + event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y + _pause 50 + event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y + _pause 50 + + set result [list] + lappend result [_get_selection $e] + + # Insert cursor should be at the end of "select" + lappend result [$e index insert] + + # Move mouse one character to the left + set current [expr {$anchor - 1}] + foreach {current_x current_y} [_text_ind_to_x_y $e $current] break + + event generate $e <B1-Motion> -x $current_x -y $current_y + _pause 50 + + # Insert cursor should be before the l in "select" + lappend result [$e index insert] + + # Selection should still be the word "select" + lappend result [_get_selection $e] + + # Move mouse to the space before the word "select" + set current [expr {$current - 3}] + foreach {current_x current_y} [_text_ind_to_x_y $e $current] break + + event generate $e <B1-Motion> -x $current_x -y $current_y + _pause 50 + + lappend result [$e index insert] + lappend result [_get_selection $e] + + # Move mouse to the r in "Word" + set current [expr {$current - 2}] + foreach {current_x current_y} [_text_ind_to_x_y $e $current] break + + event generate $e <B1-Motion> -x $current_x -y $current_y + _pause 50 + + # Selection should now be "Word select" + lappend result [_get_selection $e] + + # Insert cursor should be before the r in "Word" + lappend result [$e index insert] + + set result +} {select 11 7 select 4 { select} {Word select} 2} + + +test event-triple-click-drag-1.1 { Triple click and drag across lines in + a text widget, this should extend the selection to the new line } { + destroy .t + set t [toplevel .t] + set e [text $t.e] + pack $e + tkwait visibility $e + focus -force $e + _keypress_string $e "LINE ONE\nLINE TWO\nLINE THREE" + + set anchor 3.2 + + # Triple click one third line leaving mouse down + + foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break + + event generate $e <Enter> + + event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y + _pause 50 + event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y + _pause 50 + + event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y + _pause 50 + event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y + _pause 50 + + event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y + _pause 50 + + set result [list] + lappend result [_get_selection $e] + + # Drag up to second line + + set current [$e index [list $anchor - 1 line]] + foreach {current_x current_y} [_text_ind_to_x_y $e $current] break + + event generate $e <B1-Motion> -x $current_x -y $current_y + _pause 50 + + lappend result [_get_selection $e] + + # Drag up to first line + + set current [$e index [list $current - 1 line]] + foreach {current_x current_y} [_text_ind_to_x_y $e $current] break + + event generate $e <B1-Motion> -x $current_x -y $current_y + _pause 50 + + lappend result [_get_selection $e] + + set result + +} [list "LINE THREE\n" "LINE TWO\nLINE THREE\n" \ + "LINE ONE\nLINE TWO\nLINE THREE\n"] + + # cleanup destroy .t @@ -133,6 +661,7 @@ rename _keypress_lookup {} rename _keypress {} rename _pause {} rename _text_ind_to_x_y {} +rename _get_selection {} ::tcltest::cleanupTests return diff --git a/tests/filebox.test b/tests/filebox.test index e288b39..75bee82 100644 --- a/tests/filebox.test +++ b/tests/filebox.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: filebox.test,v 1.11 2001/08/01 16:21:12 dgp Exp $ +# RCS: @(#) $Id: filebox.test,v 1.11.2.1 2002/06/10 05:38:26 wolfsuit Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -113,178 +113,288 @@ makeFile { # this file can be empty! } $tmpFile +array set filters { + 1 {} + 2 { + {"Text files" {.txt .doc} } + {"Text files" {} TEXT} + {"Tcl Scripts" {.tcl} TEXT} + {"C Source Files" {.c .h} } + {"All Source Files" {.tcl .c .h} } + {"Image Files" {.gif} } + {"Image Files" {.jpeg .jpg} } + {"Image Files" "" {GIFF JPEG}} + {"All files" *} + } + 3 { + {"Text files" {.txt .doc} TEXT} + {"Foo" {""} TEXT} + } +} + foreach mode $modes { # # Test both the motif version and the "tk" version of the file dialog # box on Unix. # + # Note that this can use the same test number twice! + # + set addedExtensions {} if {$tcl_platform(platform) == "unix"} { set tk_strictMotif $mode - } - - # - # Test both the "open" and the "save" dialogs - # - - foreach command "tk_getOpenFile tk_getSaveFile" { - test filebox-1.1 "$command command" { - list [catch {$command -foo} msg] $msg - } $unknownOptionsMsg($command) - - catch {$command -foo 1} msg - regsub -all , $msg "" options - regsub \"-foo\" $options "" options - - foreach option $options { - if {[string index $option 0] == "-"} { - test filebox-1.2 "$command command" { - list [catch {$command $option} msg] $msg - } [list 1 "value for \"$option\" missing"] - } + # Extension adding is only done when using the non-motif file + # box with an extension-less filename + if {!$mode} { + set addedExtensions {NONE {} .txt .txt} } + } - test filebox-1.3 "$command command" { - list [catch {$command -foo bar} msg] $msg - } $unknownOptionsMsg($command) - - test filebox-1.4 "$command command" { - list [catch {$command -initialdir} msg] $msg - } {1 {value for "-initialdir" missing}} - - test filebox-1.5 "$command command" { - list [catch {$command -parent foo.bar} msg] $msg - } {1 {bad window path name "foo.bar"}} + test filebox-1.1 "tk_getOpenFile command" { + list [catch {tk_getOpenFile -foo} msg] $msg + } $unknownOptionsMsg(tk_getOpenFile) + + catch {tk_getOpenFile -foo 1} msg + regsub -all , $msg "" options + regsub \"-foo\" $options "" options + + foreach option $options { + if {[string index $option 0] == "-"} { + test filebox-1.2 "tk_getOpenFile command" { + list [catch {tk_getOpenFile $option} msg] $msg + } [list 1 "value for \"$option\" missing"] + } + } + + test filebox-1.3 "tk_getOpenFile command" { + list [catch {tk_getOpenFile -foo bar} msg] $msg + } $unknownOptionsMsg(tk_getOpenFile) + + test filebox-1.4 "tk_getOpenFile command" { + list [catch {tk_getOpenFile -initialdir} msg] $msg + } {1 {value for "-initialdir" missing}} + + test filebox-1.5 "tk_getOpenFile command" { + list [catch {tk_getOpenFile -parent foo.bar} msg] $msg + } {1 {bad window path name "foo.bar"}} + + test filebox-1.6 "tk_getOpenFile command" { + list [catch {tk_getOpenFile -filetypes {Foo}} msg] $msg + } {1 {bad file type "Foo", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"}} + + if {[info commands tk::MotifFDialog] == "" && [info commands ::tk::dialog::file::] == ""} { + set isNative 1 + } else { + set isNative 0 + } + + set parent . + + set verylongstring longstring: + set verylongstring $verylongstring$verylongstring + set verylongstring $verylongstring$verylongstring + set verylongstring $verylongstring$verylongstring + set verylongstring $verylongstring$verylongstring + # set verylongstring $verylongstring$verylongstring + # set verylongstring $verylongstring$verylongstring + # set verylongstring $verylongstring$verylongstring + # set verylongstring $verylongstring$verylongstring + # set verylongstring $verylongstring$verylongstring + + set color #404040 + test filebox-2.1 "tk_getOpenFile command" {nonUnixUserInteraction} { + ToPressButton $parent cancel + tk_getOpenFile -title "Press Cancel ($verylongstring)" -parent $parent + } "" + + set fileName $tmpFile + set fileDir [pwd] + set pathName [file join $fileDir $fileName] + + test filebox-2.2 "tk_getOpenFile command" {nonUnixUserInteraction} { + ToPressButton $parent ok + set choice [tk_getOpenFile -title "Press Ok" \ + -parent $parent -initialfile $fileName -initialdir $fileDir] + } $pathName + + test filebox-2.3 "tk_getOpenFile command" {nonUnixUserInteraction} { + ToEnterFileByKey $parent $fileName $fileDir + set choice [tk_getOpenFile -title "Enter \"$fileName\" and press Ok" \ + -parent $parent -initialdir $fileDir] + } $pathName + + test filebox-2.4 "tk_getOpenFile command" {nonUnixUserInteraction} { + ToPressButton $parent ok + set choice [tk_getOpenFile -title "Enter \"$fileName\" and press Ok" \ + -parent $parent -initialdir . \ + -initialfile $fileName] + } $pathName + + test filebox-2.5 "tk_getOpenFile command" {nonUnixUserInteraction} { + ToPressButton $parent ok + set choice [tk_getOpenFile -title "Enter \"$fileName\" and press Ok" \ + -parent $parent -initialdir /badpath \ + -initialfile $fileName] + } $pathName + + test filebox-2.6 "tk_getOpenFile command" {nonUnixUserInteraction} { + toplevel .t1; toplevel .t2 + wm geometry .t1 +0+0 + wm geometry .t2 +0+0 + ToPressButton .t1 ok + set choice {} + lappend choice [tk_getOpenFile \ + -title "Enter \"$fileName\" and press Ok" \ + -parent .t1 -initialdir $fileDir \ + -initialfile $fileName] + ToPressButton .t2 ok + lappend choice [tk_getOpenFile \ + -title "Enter \"$fileName\" and press Ok" \ + -parent .t2 -initialdir $fileDir \ + -initialfile $fileName] + ToPressButton .t1 ok + lappend choice [tk_getOpenFile \ + -title "Enter \"$fileName\" and press Ok" \ + -parent .t1 -initialdir $fileDir \ + -initialfile $fileName] + destroy .t1 + destroy .t2 + set choice + } [list $pathName $pathName $pathName] + + foreach x [lsort -integer [array names filters]] { + test filebox-3.$x "tk_getOpenFile command" {nonUnixUserInteraction} { + ToPressButton $parent ok + set choice [tk_getOpenFile -title "Press Ok" -filetypes $filters($x)\ + -parent $parent -initialfile $fileName -initialdir $fileDir] + } $pathName + } - test filebox-1.6 "$command command" { - list [catch {$command -filetypes {Foo}} msg] $msg - } {1 {bad file type "Foo", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"}} + test filebox-4.1 "tk_getSaveFile command" { + list [catch {tk_getSaveFile -foo} msg] $msg + } $unknownOptionsMsg(tk_getSaveFile) - if {[info commands tk::MotifFDialog] == "" && [info commands ::tk::dialog::file::] == ""} { - set isNative 1 - } else { - set isNative 0 - } + catch {tk_getSaveFile -foo 1} msg + regsub -all , $msg "" options + regsub \"-foo\" $options "" options - set parent . - - set verylongstring longstring: - set verylongstring $verylongstring$verylongstring - set verylongstring $verylongstring$verylongstring - set verylongstring $verylongstring$verylongstring - set verylongstring $verylongstring$verylongstring -# set verylongstring $verylongstring$verylongstring -# set verylongstring $verylongstring$verylongstring -# set verylongstring $verylongstring$verylongstring -# set verylongstring $verylongstring$verylongstring -# set verylongstring $verylongstring$verylongstring - - set color #404040 - test filebox-2.1 "$command command" {nonUnixUserInteraction} { - ToPressButton $parent cancel - $command -title "Press Cancel ($verylongstring)" -parent $parent - } "" - - if {$command == "tk_getSaveFile"} { - set fileName "12x 455" - set fileDir [pwd] - set pathName [file join [pwd] $fileName] - } else { - set fileName $tmpFile - set fileDir [pwd] - set pathName [file join $fileDir $fileName] + foreach option $options { + if {[string index $option 0] == "-"} { + test filebox-4.2 "tk_getSaveFile command" { + list [catch {tk_getSaveFile $option} msg] $msg + } [list 1 "value for \"$option\" missing"] } + } - test filebox-2.2 "$command command" {nonUnixUserInteraction} { - ToPressButton $parent ok - set choice [$command -title "Press Ok" \ - -parent $parent -initialfile $fileName -initialdir $fileDir] - } $pathName + test filebox-4.3 "tk_getSaveFile command" { + list [catch {tk_getSaveFile -foo bar} msg] $msg + } $unknownOptionsMsg(tk_getSaveFile) - test filebox-2.3 "$command command" {nonUnixUserInteraction} { - ToEnterFileByKey $parent $fileName $fileDir - set choice [$command -title "Enter \"$fileName\" and press Ok" \ - -parent $parent -initialdir $fileDir] - } $pathName + test filebox-4.4 "tk_getSaveFile command" { + list [catch {tk_getSaveFile -initialdir} msg] $msg + } {1 {value for "-initialdir" missing}} - test filebox-2.4 "$command command" {nonUnixUserInteraction} { - ToPressButton $parent ok - set choice [$command -title "Enter \"$fileName\" and press Ok" \ - -parent $parent -initialdir . \ - -initialfile $fileName] - } $pathName + test filebox-4.5 "tk_getSaveFile command" { + list [catch {tk_getSaveFile -parent foo.bar} msg] $msg + } {1 {bad window path name "foo.bar"}} - test filebox-2.5 "$command command" {nonUnixUserInteraction} { - ToPressButton $parent ok - set choice [$command -title "Enter \"$fileName\" and press Ok" \ - -parent $parent -initialdir /badpath \ - -initialfile $fileName] - } $pathName - - test filebox-2.6 "$command command" {nonUnixUserInteraction} { - toplevel .t1; toplevel .t2 - wm geometry .t1 +0+0 - wm geometry .t2 +0+0 - ToPressButton .t1 ok - set choice {} - lappend choice [$command \ - -title "Enter \"$fileName\" and press Ok" \ - -parent .t1 -initialdir $fileDir \ - -initialfile $fileName] - ToPressButton .t2 ok - lappend choice [$command \ - -title "Enter \"$fileName\" and press Ok" \ - -parent .t2 -initialdir $fileDir \ - -initialfile $fileName] - ToPressButton .t1 ok - lappend choice [$command \ - -title "Enter \"$fileName\" and press Ok" \ - -parent .t1 -initialdir $fileDir \ - -initialfile $fileName] - destroy .t1 - destroy .t2 - set choice - } [list $pathName $pathName $pathName] - - - - set filters(1) {} - - set filters(2) { - {"Text files" {.txt .doc} } - {"Text files" {} TEXT} - {"Tcl Scripts" {.tcl} TEXT} - {"C Source Files" {.c .h} } - {"All Source Files" {.tcl .c .h} } - {"Image Files" {.gif} } - {"Image Files" {.jpeg .jpg} } - {"Image Files" "" {GIFF JPEG}} - {"All files" *} - } + test filebox-4.6 "tk_getSaveFile command" { + list [catch {tk_getSaveFile -filetypes {Foo}} msg] $msg + } {1 {bad file type "Foo", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"}} - set filters(3) { - {"Text files" {.txt .doc} TEXT} - {"Foo" {""} TEXT} - } - - foreach x [lsort -integer [array names filters]] { - test filebox-3.$x "$command command" {nonUnixUserInteraction} { - ToPressButton $parent ok - set choice [$command -title "Press Ok" -filetypes $filters($x)\ - -parent $parent -initialfile $fileName -initialdir $fileDir] - } $pathName - } - - # The rest of the tests need to be executed on Unix only. - # The test whether the dialog box widgets were implemented correctly. - # These tests are not - # needed on the other platforms because they use native file dialogs. + if {[info commands tk::MotifFDialog] == "" && [info commands ::tk::dialog::file::] == ""} { + set isNative 1 + } else { + set isNative 0 + } - # end inner if + set parent . + + set verylongstring longstring: + set verylongstring $verylongstring$verylongstring + set verylongstring $verylongstring$verylongstring + set verylongstring $verylongstring$verylongstring + set verylongstring $verylongstring$verylongstring + # set verylongstring $verylongstring$verylongstring + # set verylongstring $verylongstring$verylongstring + # set verylongstring $verylongstring$verylongstring + # set verylongstring $verylongstring$verylongstring + # set verylongstring $verylongstring$verylongstring + + set color #404040 + test filebox-5.1 "tk_getSaveFile command" {nonUnixUserInteraction} { + ToPressButton $parent cancel + tk_getSaveFile -title "Press Cancel ($verylongstring)" -parent $parent + } "" + + set fileName "12x 455" + set fileDir [pwd] + set pathName [file join [pwd] $fileName] + + test filebox-5.2 "tk_getSaveFile command" {nonUnixUserInteraction} { + ToPressButton $parent ok + set choice [tk_getSaveFile -title "Press Ok" \ + -parent $parent -initialfile $fileName -initialdir $fileDir] + } $pathName + + test filebox-5.3 "tk_getSaveFile command" {nonUnixUserInteraction} { + ToEnterFileByKey $parent $fileName $fileDir + set choice [tk_getSaveFile -title "Enter \"$fileName\" and press Ok" \ + -parent $parent -initialdir $fileDir] + } $pathName + + test filebox-5.4 "tk_getSaveFile command" {nonUnixUserInteraction} { + ToPressButton $parent ok + set choice [tk_getSaveFile -title "Enter \"$fileName\" and press Ok" \ + -parent $parent -initialdir . \ + -initialfile $fileName] + } $pathName + + test filebox-5.5 "tk_getSaveFile command" {nonUnixUserInteraction} { + ToPressButton $parent ok + set choice [tk_getSaveFile -title "Enter \"$fileName\" and press Ok" \ + -parent $parent -initialdir /badpath \ + -initialfile $fileName] + } $pathName + + test filebox-5.6 "tk_getSaveFile command" {nonUnixUserInteraction} { + toplevel .t1; toplevel .t2 + wm geometry .t1 +0+0 + wm geometry .t2 +0+0 + ToPressButton .t1 ok + set choice {} + lappend choice [tk_getSaveFile \ + -title "Enter \"$fileName\" and press Ok" \ + -parent .t1 -initialdir $fileDir \ + -initialfile $fileName] + ToPressButton .t2 ok + lappend choice [tk_getSaveFile \ + -title "Enter \"$fileName\" and press Ok" \ + -parent .t2 -initialdir $fileDir \ + -initialfile $fileName] + ToPressButton .t1 ok + lappend choice [tk_getSaveFile \ + -title "Enter \"$fileName\" and press Ok" \ + -parent .t1 -initialdir $fileDir \ + -initialfile $fileName] + destroy .t1 + destroy .t2 + set choice + } [list $pathName $pathName $pathName] + + foreach x [lsort -integer [array names filters]] { + test filebox-6.$x "tk_getSaveFile command" {nonUnixUserInteraction} { + ToPressButton $parent ok + set choice [tk_getSaveFile -title "Press Ok" -filetypes $filters($x)\ + -parent $parent -initialfile $fileName -initialdir $fileDir] + } $pathName[lindex $addedExtensions $x] } - # end outer if + # The rest of the tests need to be executed on Unix only. + # The test whether the dialog box widgets were implemented correctly. + # These tests are not + # needed on the other platforms because they use native file dialogs. } set tk_strictMotif $tk_strictMotif_old diff --git a/tests/focus.test b/tests/focus.test index 1e5a66e..3bde7f7 100644 --- a/tests/focus.test +++ b/tests/focus.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: focus.test,v 1.7.2.1 2001/10/15 09:22:00 wolfsuit Exp $ +# RCS: @(#) $Id: focus.test,v 1.7.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -572,7 +572,7 @@ test focus-6.1 {miscellaneous - embedded application in same process} \ bind all <FocusOut> {lappend x "focus out %W %d"} interp create child child eval "set argv {-use [winfo id .t.f1]}" - load {} tk child + load {} Tk child child eval { entry .e1 -bg lightBlue pack .e1 diff --git a/tests/listbox.test b/tests/listbox.test index 3e5b177..4f0fc3d 100644 --- a/tests/listbox.test +++ b/tests/listbox.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: listbox.test,v 1.16.2.1 2001/10/15 09:22:00 wolfsuit Exp $ +# RCS: @(#) $Id: listbox.test,v 1.16.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -940,11 +940,19 @@ test listbox-4.18 {ConfigureListbox, no listvar -> bad listvar} { catch {destroy .l} listbox .l .l insert end a b c d - set x {this is a " bad list} + set x "this is a \" bad list" catch {.l configure -listvar x} result list [.l get 0 end] [.l cget -listvar] $result } [list [list a b c d] {} \ - "unmatched open quote in list: invalid listvar value"] + "unmatched open quote in list: invalid -listvariable value"] +test listbox-4.19 {ConfigureListbox, no listvar -> bad non-existent listvar} { + catch {destroy .l} + listbox .l -listvar foo + .l insert end a b c d + catch {.l configure -listvar ::zoo::bar::foo} result + list [.l get 0 end] [.l cget -listvar] $foo $result +} [list [list a b c d] foo [list a b c d] \ + {can't set "::zoo::bar::foo": parent namespace doesn't exist}] # No tests for DisplayListbox: I don't know how to test this procedure. @@ -1848,7 +1856,7 @@ test listbox-21.11 {ListboxListVarProc, bad list} { catch {unset x} listbox .l -listvar x set x [list a b c d] - catch {set x {this is a " bad list}} result + catch {set x "this is a \" bad list"} result set result } {can't set "x": invalid listvar value} test listbox-21.12 {ListboxListVarProc, cleanup item attributes} { @@ -2100,11 +2108,17 @@ test listbox-26.5 {listbox disabled state disallows active modification} { .l index active } 0 +test listbox-27.1 {widget deletion while active} { + destroy .l + pack [listbox .l] + update + .l configure -cursor xterm -xscrollcommand { destroy .l } + update idle + winfo exists .l +} 0 + resetGridInfo -catch {destroy .l2} -catch {destroy .t} -catch {destroy .e} -catch {destroy .partial} +eval destroy [winfo children .] option clear # cleanup diff --git a/tests/macEmbed.test b/tests/macEmbed.test index bf5eae9..7692bb9 100644 --- a/tests/macEmbed.test +++ b/tests/macEmbed.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: macEmbed.test,v 1.5.2.1 2001/10/15 09:22:00 wolfsuit Exp $ +# RCS: @(#) $Id: macEmbed.test,v 1.5.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -216,7 +216,7 @@ test unixEmbed-5.1 {TkpClaimFocus procedure} {macOnly tempNotMac} { pack .f1 .f2 interp create child child eval "set argv {-use [winfo id .f1]}" - load {} tk child + load {} Tk child child eval { . configure -bd 2 -highlightthickness 2 -relief sunken } diff --git a/tests/macMenu.test b/tests/macMenu.test index 5dbc78a..0a0c733 100644 --- a/tests/macMenu.test +++ b/tests/macMenu.test @@ -7,7 +7,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: macMenu.test,v 1.6.2.1 2001/10/15 09:22:00 wolfsuit Exp $ +# RCS: @(#) $Id: macMenu.test,v 1.6.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -841,7 +841,7 @@ test macMenu-21.3 {TkpSetMainMenubar - different interps} {macOnly} { catch {destroy .m1} catch {interp delete testinterp} interp create testinterp - load {} tk testinterp + load {} Tk testinterp menu .m1 . configure -menu .m1 raise . diff --git a/tests/menu.test b/tests/menu.test index 550cdc5..aadaf84 100644 --- a/tests/menu.test +++ b/tests/menu.test @@ -5,7 +5,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: menu.test,v 1.9.2.2 2002/02/05 02:25:17 wolfsuit Exp $ +# RCS: @(#) $Id: menu.test,v 1.9.2.3 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -2321,7 +2321,7 @@ test menu-26.1 {DestroyMenuHashTable} { test menu-27.1 {GetMenuHashTable} { catch {interp destroy testinterp} interp create testinterp - load {} tk testinterp + load {} Tk testinterp list [catch {interp eval testinterp {menu .m1}} msg] $msg [interp delete testinterp] } {0 .m1 {}} diff --git a/tests/panedwindow.test b/tests/panedwindow.test index a5f626a..4a0df0e 100644 --- a/tests/panedwindow.test +++ b/tests/panedwindow.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: panedwindow.test,v 1.1.4.1 2002/06/10 05:08:00 wolfsuit Exp $ +# RCS: @(#) $Id: panedwindow.test,v 1.1.4.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[info tclversion] < 8.4} { puts "panedwindow requires Tk 8.4" diff --git a/tests/safe.test b/tests/safe.test index bf45922..6ef770d 100644 --- a/tests/safe.test +++ b/tests/safe.test @@ -6,12 +6,32 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: safe.test,v 1.7.2.1 2001/10/15 09:22:00 wolfsuit Exp $ +# RCS: @(#) $Id: safe.test,v 1.7.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } +## NOTE: Any time tests fail here with an error like: + +# Can't find a usable tk.tcl in the following directories: +# {$p(:26:)} +# +# $p(:26:)/tk.tcl: script error +# script error +# invoked from within +# "source {$p(:26:)/tk.tcl}" +# ("uplevel" body line 1) +# invoked from within +# "uplevel #0 [list source $file]" +# +# +# This probably means that tk wasn't installed properly. + +## it indicates that something went wrong sourcing tk.tcl. +## Ensure that any changes that occured to tk.tcl will work or +## are properly prevented in a safe interpreter. -- hobbs + foreach i [winfo children .] { destroy $i } @@ -176,16 +196,3 @@ test safe-7.1 {canvas printing} { unset hidden_cmds ::tcltest::cleanupTests return - - - - - - - - - - - - - diff --git a/tests/unixEmbed.test b/tests/unixEmbed.test index e793f91..f653740 100644 --- a/tests/unixEmbed.test +++ b/tests/unixEmbed.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: unixEmbed.test,v 1.8.2.1 2001/10/15 09:22:00 wolfsuit Exp $ +# RCS: @(#) $Id: unixEmbed.test,v 1.8.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -550,7 +550,7 @@ test unixEmbed-8.2 {TkpClaimFocus procedure} { pack .f1 .f2 interp create child child eval "set argv {-use [winfo id .f1]}" - load {} tk child + load {} Tk child child eval { . configure -bd 2 -highlightthickness 2 -relief sunken } diff --git a/tests/unixWm.test b/tests/unixWm.test index b6f51dc..76dd6bb 100644 --- a/tests/unixWm.test +++ b/tests/unixWm.test @@ -7,7 +7,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: unixWm.test,v 1.13.2.2 2002/02/05 02:25:18 wolfsuit Exp $ +# RCS: @(#) $Id: unixWm.test,v 1.13.2.3 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -1262,12 +1262,6 @@ test unixWm-36.2 {Tk_WmCmd procedure, "title" option} {unixOnly} { lappend result [wm title .t] [testprop [testwrapper .t] WM_NAME] } {t t {Test window} {Test window}} -test unixWm-37.1 {Tk_WmCmd procedure, "transient" option} { - list [catch {wm transient .t 1 2} msg] $msg -} {1 {wrong # arguments: must be "wm transient window ?master?"}} -test unixWm-37.2 {Tk_WmCmd procedure, "transient" option} { - list [catch {wm transient .t foo} msg] $msg -} {1 {bad window path name "foo"}} test unixWm-37.3 {Tk_WmCmd procedure, "transient" option} {unixOnly} { set result {} catch {destroy .t2} @@ -1832,7 +1826,7 @@ test unixWm-50.4 {Tk_CoordsToWindow procedure, window in other application} { wm geometry .t +0+0 tkwait visibility .t interp create slave - load {} tk slave + load {} Tk slave slave eval {wm geometry . 200x200+0+0; tkwait visibility .} set result [list [winfo containing 100 100] \ [slave eval {winfo containing 100 100}]] diff --git a/tests/winClipboard.test b/tests/winClipboard.test index 3500a31..72bbc9a 100644 --- a/tests/winClipboard.test +++ b/tests/winClipboard.test @@ -10,7 +10,7 @@ # Copyright (c) 1998-2000 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: winClipboard.test,v 1.9.2.1 2001/10/15 09:22:00 wolfsuit Exp $ +# RCS: @(#) $Id: winClipboard.test,v 1.9.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -30,23 +30,31 @@ test winClipboard-1.1 {TkSelGetSelection} {pcOnly} { test winClipboard-1.2 {TkSelGetSelection} {pcOnly testclipboard} { clipboard clear clipboard append {} - list [selection get -selection CLIPBOARD] [testclipboard] + catch {selection get -selection CLIPBOARD} r1 + catch {testclipboard} r2 + list $r1 $r2 } {{} {}} test winClipboard-1.3 {TkSelGetSelection & TkWinClipboardRender} {pcOnly testclipboard} { clipboard clear clipboard append abcd update - list [selection get -selection CLIPBOARD] [testclipboard] + catch {selection get -selection CLIPBOARD} r1 + catch {testclipboard} r2 + list $r1 $r2 } {abcd abcd} test winClipboard-1.4 {TkSelGetSelection & TkWinClipboardRender} {pcOnly testclipboard} { clipboard clear clipboard append "line 1\nline 2" - list [selection get -selection CLIPBOARD] [testclipboard] + catch {selection get -selection CLIPBOARD} r1 + catch {testclipboard} r2 + list $r1 $r2 } [list "line 1\nline 2" "line 1\r\nline 2"] test winClipboard-1.5 {TkSelGetSelection & TkWinClipboardRender} {pcOnly testclipboard} { clipboard clear clipboard append "line 1\u00c7\nline 2" - list [selection get -selection CLIPBOARD] [testclipboard] + catch {selection get -selection CLIPBOARD} r1 + catch {testclipboard} r2 + list $r1 $r2 } [list "line 1\u00c7\nline 2" [bytestring "line 1\u00c7\r\nline 2"]] test winClipboard-2.1 {TkSelUpdateClipboard reentrancy problem} {pcOnly testclipboard} { @@ -54,14 +62,18 @@ test winClipboard-2.1 {TkSelUpdateClipboard reentrancy problem} {pcOnly testclip clipboard append -type OUR_ACTION "action data" clipboard append "string data" update - list [selection get -selection CLIPBOARD -type OUR_ACTION] [testclipboard] + catch {selection get -selection CLIPBOARD -type OUR_ACTION} r1 + catch {testclipboard} r2 + list $r1 $r2 } [list "action data" "string data"] test winClipboard-2.2 {TkSelUpdateClipboard reentrancy problem} {pcOnly testclipboard} { clipboard clear clipboard append -type OUR_ACTION "new data" clipboard append "more data in string" update - list [testclipboard] [selection get -selection CLIPBOARD -type OUR_ACTION] + catch {testclipboard} r1 + catch {selection get -selection CLIPBOARD -type OUR_ACTION} r2 + list $r1 $r2 } [list "more data in string" "new data"] # cleanup diff --git a/tests/winDialog.test b/tests/winDialog.test index d6ebe75..7cae4d2 100644 --- a/tests/winDialog.test +++ b/tests/winDialog.test @@ -6,11 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # Copyright (c) 1998-1999 ActiveState Corporation. # -<<<<<<< winDialog.test -# RCS: @(#) $Id: winDialog.test,v 1.7.2.1 2001/10/15 09:22:00 wolfsuit Exp $ -======= -# RCS: @(#) $Id: winDialog.test,v 1.7.2.1 2001/10/15 09:22:00 wolfsuit Exp $ ->>>>>>> 1.7 +# RCS: @(#) $Id: winDialog.test,v 1.7.2.2 2002/06/10 05:38:26 wolfsuit Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] @@ -127,29 +123,17 @@ test winDialog-5.8 {GetFileName: extension begins with .} {nt testwinevent} { SetText 0x480 bar Click 1 } -<<<<<<< winDialog.test - set x -} [file join [pwd] bar.foo] -test winDialog-5.9 {GetFileName: extension doesn't begin with .} {nt} { -======= string totitle $x } [string totitle [file join [pwd] bar.foo]] test winDialog-5.9 {GetFileName: extension doesn't begin with .} {nt testwinevent} { ->>>>>>> 1.7 start {set x [tk_getSaveFile -defaultextension foo -title Save]} then { SetText 0x480 bar Click 1 } -<<<<<<< winDialog.test - set x -} [file join [pwd] bar.foo] -test winDialog-5.10 {GetFileName: file types} {nt} { -======= string totitle $x } [string totitle [file join [pwd] bar.foo]] test winDialog-5.10 {GetFileName: file types} {nt testwinevent} { ->>>>>>> 1.7 # case FILE_TYPES: start {tk_getSaveFile -filetypes {{"foo files" .foo FOOF}} -title Foo} @@ -186,8 +170,8 @@ test winDialog-5.14 {GetFileName: initial file} {nt testwinevent} { then { Click 1 } - set x -} [file join [pwd] "12x 456"] + string totitle $x +} [string totitle [file join [pwd] "12x 456"]] test winDialog-5.15 {GetFileName: initial file: Tcl_TranslateFileName()} {nt} { # if (Tcl_TranslateFileName(interp, string, &ds) == NULL) list [catch {tk_getOpenFile -initialfile ~12x/455} msg] $msg @@ -202,8 +186,8 @@ test winDialog-5.16 {GetFileName: initial file: long name} {nt testwinevent} { then { Click 1 } - set x -} [string range [file join [pwd] $a] 0 257] + string totitle $x +} [string totitle [string range [file join [pwd] $a] 0 257]] test winDialog-5.17 {GetFileName: parent} {nt} { # case FILE_PARENT: diff --git a/tests/wm.test b/tests/wm.test index 19356ef..cdf1c08 100644 --- a/tests/wm.test +++ b/tests/wm.test @@ -7,7 +7,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: wm.test,v 1.2.2.1 2002/02/05 02:25:18 wolfsuit Exp $ +# RCS: @(#) $Id: wm.test,v 1.2.2.2 2002/06/10 05:38:26 wolfsuit Exp $ # This file tests window manager interactions that work across # platforms. Window manager tests that only work on a specific @@ -20,13 +20,14 @@ if {[lsearch [namespace children] ::tcltest] == -1} { proc deleteWindows {} { foreach i [winfo children .] { - catch [destroy $i] + destroy $i } } deleteWindows +wm deicon . test wm-stackorder-1.1 {usage} { list [catch {wm stackorder} err] $err @@ -34,11 +35,11 @@ test wm-stackorder-1.1 {usage} { test wm-stackorder-1.2 {usage} { list [catch {wm stackorder . _} err] $err -} {1 {wrong # arguments: must be "wm stackorder window ?isabove|isbelow? ?window?"}} +} {1 {wrong # arguments: must be "wm stackorder window ?isabove|isbelow window?"}} test wm-stackorder-1.3 {usage} { list [catch {wm stackorder . _ _ _} err] $err -} {1 {wrong # arguments: must be "wm stackorder window ?isabove|isbelow? ?window?"}} +} {1 {wrong # arguments: must be "wm stackorder window ?isabove|isbelow window?"}} test wm-stackorder-1.4 {usage} { list [catch {wm stackorder . is .} err] $err @@ -293,19 +294,247 @@ test wm-stackorder-5.3 {An overrideredirect window wm stackorder .t isbelow . } 1 +test wm-stackorder-6.1 {An embedded toplevel does not + appear in the stacking order} { + deleteWindows + toplevel .real -container 1 + toplevel .embd -bg blue -use [winfo id .real] + update + wm stackorder . +} {. .real} + + +test wm-transient-1.1 {usage} { + catch {destroy .t} ; toplevel .t + list [catch {wm transient .t 1 2} msg] $msg +} {1 {wrong # arguments: must be "wm transient window ?master?"}} + +test wm-transient-1.2 {usage} { + catch {destroy .t} ; toplevel .t + list [catch {wm transient .t foo} msg] $msg +} {1 {bad window path name "foo"}} + +test wm-transient-1.3 {usage} { + catch {destroy .t} ; toplevel .t + list [catch {wm transient foo .t} msg] $msg +} {1 {bad window path name "foo"}} + +test wm-transient-1.4 {usage} { + deleteWindows + toplevel .master + toplevel .subject + wm transient .subject .master + list [catch {wm iconify .subject} msg] $msg +} {1 {can't iconify ".subject": it is a transient}} + +test wm-transient-1.5 {usage} { + deleteWindows + toplevel .icon -bg blue + toplevel .top + wm iconwindow .top .icon + toplevel .dummy + list [catch {wm transient .icon .dummy} msg] $msg +} {1 {can't make ".icon" a transient: it is an icon for .top}} + +test wm-transient-1.6 {usage} { + deleteWindows + toplevel .icon -bg blue + toplevel .top + wm iconwindow .top .icon + toplevel .dummy + list [catch {wm transient .dummy .icon} msg] $msg +} {1 {can't make ".icon" a master: it is an icon for .top}} + +test wm-transient-1.7 {usage} { + deleteWindows + toplevel .master + list [catch {wm transient .master .master} err] $err +} {1 {can't make ".master" its own master}} + +test wm-transient-1.8 {usage} { + deleteWindows + toplevel .master + frame .master.f + list [catch {wm transient .master .master.f} err] $err +} {1 {can't make ".master" its own master}} + +test wm-transient-2.1 { basic get/set of master } { + deleteWindows + set results [list] + toplevel .master + toplevel .subject + lappend results [wm transient .subject] + wm transient .subject .master + lappend results [wm transient .subject] + wm transient .subject {} + lappend results [wm transient .subject] + set results +} {{} .master {}} + +test wm-transient-2.2 { first toplevel parent of + non-toplevel master is used } { + deleteWindows + toplevel .master + frame .master.f + toplevel .subject + wm transient .subject .master.f + wm transient .subject +} {.master} + + + +test wm-state-1.1 {usage} { + list [catch {wm state} err] $err +} {1 {wrong # args: should be "wm option window ?arg ...?"}} -deleteWindows +test wm-state-1.2 {usage} { + list [catch {wm state . _ _} err] $err +} {1 {wrong # arguments: must be "wm state window ?state?"}} +test wm-state-2.1 {initial state} { + deleteWindows + toplevel .t + wm state .t +} {normal} -# FIXME: +test wm-state-2.2 {state change before map} { + deleteWindows + toplevel .t + wm state .t withdrawn + wm state .t +} {withdrawn} + +test wm-state-2.3 {state change before map} { + deleteWindows + toplevel .t + wm withdraw .t + wm state .t +} {withdrawn} + +test wm-state-2.4 {state change after map} { + deleteWindows + toplevel .t + update + wm state .t withdrawn + wm state .t +} {withdrawn} + +test wm-state-2.5 {state change after map} { + deleteWindows + toplevel .t + update + wm withdraw .t + wm state .t +} {withdrawn} + +test wm-state-2.6 {state change before map} { + deleteWindows + toplevel .t + wm state .t iconic + wm state .t +} {iconic} + +test wm-state-2.7 {state change before map} { + deleteWindows + toplevel .t + wm iconify .t + wm state .t +} {iconic} + +test wm-state-2.8 {state change after map} { + deleteWindows + toplevel .t + update + wm state .t iconic + wm state .t +} {iconic} + +test wm-state-2.9 {state change after map} { + deleteWindows + toplevel .t + update + wm iconify .t + wm state .t +} {iconic} + +test wm-state-2.10 {state change before map} { + deleteWindows + toplevel .t + wm withdraw .t + wm state .t normal + wm state .t +} {normal} + +test wm-state-2.11 {state change before map} { + deleteWindows + toplevel .t + wm withdraw .t + wm deiconify .t + wm state .t +} {normal} + +test wm-state-2.12 {state change after map} { + deleteWindows + toplevel .t + update + wm withdraw .t + wm state .t normal + wm state .t +} {normal} + +test wm-state-2.13 {state change after map} { + deleteWindows + toplevel .t + update + wm withdraw .t + wm deiconify .t + wm state .t +} {normal} + +test wm-state-2.14 {state change before map} { + deleteWindows + toplevel .t + wm iconify .t + wm state .t normal + wm state .t +} {normal} + +test wm-state-2.15 {state change before map} { + deleteWindows + toplevel .t + wm iconify .t + wm deiconify .t + wm state .t +} {normal} + +test wm-state-2.16 {state change after map} { + deleteWindows + toplevel .t + update + wm iconify .t + wm state .t normal + wm state .t +} {normal} + +test wm-state-2.17 {state change after map} { + deleteWindows + toplevel .t + update + wm iconify .t + wm deiconify .t + wm state .t +} {normal} -# Need test cases for embedded Windows, they should not appear in -# the stacking order since they are not actually toplevel Windows. + +# FIXME: # Test delivery of virtual events to the WM. We could check to see # if the window was raised after a button click for example. # This sort of testing may not be possible. + +deleteWindows + return diff --git a/unix/Makefile.in b/unix/Makefile.in index d54dcb6..a72479f 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.54.2.1 2002/02/05 02:25:18 wolfsuit Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.54.2.2 2002/06/10 05:38:26 wolfsuit Exp $ # Current Tk version; used in various names. @@ -265,8 +265,8 @@ TCLTEST_OBJS = ${TCL_BIN_DIR}/tclTest.o ${TCL_BIN_DIR}/tclThreadTest.o \ TKTEST_OBJS = $(TCLTEST_OBJS) tkTestInit.o tkTest.o tkSquare.o WIDGOBJS = tkButton.o tkEntry.o tkFrame.o tkListbox.o \ - tkMenu.o tkMenubutton.o tkMenuDraw.o tkMessage.o tkScale.o \ - tkScrollbar.o + tkMenu.o tkMenubutton.o tkMenuDraw.o tkMessage.o \ + tkPanedWindow.o tkScale.o tkScrollbar.o CANVOBJS = tkCanvas.o tkCanvArc.o tkCanvBmap.o tkCanvImg.o \ tkCanvLine.o tkCanvPoly.o tkCanvPs.o tkCanvText.o \ @@ -316,6 +316,7 @@ SRCS = \ $(GENERIC_DIR)/tkListbox.c $(GENERIC_DIR)/tkMenu.c \ $(GENERIC_DIR)/tkMenubutton.c $(GENERIC_DIR)/tkMenuDraw.c \ $(GENERIC_DIR)/tkMessage.c \ + $(GENERIC_DIR)/tkPanedWindow.c \ $(GENERIC_DIR)/tkScale.c $(GENERIC_DIR)/tkScrollbar.c \ $(GENERIC_DIR)/tkCanvas.c $(GENERIC_DIR)/tkCanvArc.c \ $(GENERIC_DIR)/tkCanvBmap.c $(GENERIC_DIR)/tkCanvImg.c \ @@ -781,6 +782,9 @@ tkMenuDraw.o: $(GENERIC_DIR)/tkMenuDraw.c tkMessage.o: $(GENERIC_DIR)/tkMessage.c $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkMessage.c +tkPanedWindow.o: $(GENERIC_DIR)/tkPanedWindow.c + $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkPanedWindow.c + tkScale.o: $(GENERIC_DIR)/tkScale.c $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkScale.c @@ -1062,13 +1066,20 @@ dist: $(UNIX_DIR)/configure $(DISTDIR)/win cp -p $(TOP_DIR)/win/*.c $(TOP_DIR)/win/*.h $(DISTDIR)/win cp -p $(TOP_DIR)/win/*.bat $(DISTDIR)/win + $(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/*.bat cp -p $(TOP_DIR)/win/makefile.* $(DISTDIR)/win + $(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/makefile.* + cp -p $(TOP_DIR)/win/rules.vc $(DISTDIR)/win + $(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/rules.vc cp -p $(TOP_DIR)/win/README $(DISTDIR)/win cp -p $(TOP_DIR)/license.terms $(DISTDIR)/win mkdir $(DISTDIR)/win/rc + cp -p $(TOP_DIR)/win/rc/wish.exe.manifest $(TOP_DIR)/win/rc/ cp -p $(TOP_DIR)/win/rc/*.rc $(TOP_DIR)/win/rc/*.cur \ $(TOP_DIR)/win/rc/*.ico $(TOP_DIR)/win/rc/*.bmp \ $(DISTDIR)/win/rc + $(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/rc/*.rc + $(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/rc/wish.exe.manifest mkdir $(DISTDIR)/mac cp -p $(TOP_DIR)/mac/tkMacProjects.sea.hqx $(DISTDIR)/mac cp -p $(TOP_DIR)/mac/*.c $(TOP_DIR)/mac/*.h $(TOP_DIR)/mac/*.r \ diff --git a/unix/README b/unix/README index c006fee..d1bb911 100644 --- a/unix/README +++ b/unix/README @@ -6,11 +6,11 @@ UNIX versions of Tk. This directory also contains source files for Tk that are specific to UNIX. The information in this file is maintained at: - http://www.purl.org/tcl/home/doc/howto/compile.html + http://www.tcl.tk/doc/howto/compile.html For information on platforms where Tcl/Tk is known to compile, along with any porting notes for getting it to work on those platforms, see: - http://www.purl.org/tcl/home/software/tcltk/platforms.html + http://www.tcl.tk/software/tcltk/platforms.html The rest of this file contains instructions on how to do this. The release should compile and run either "out of the box" or with trivial @@ -20,7 +20,7 @@ SGI, as well as PCs running Linux, BSDI, and SCO UNIX. To compile for a PC running Windows, see the README file in the directory ../win. To compile for a Macintosh, see the README file in the directory ../mac. -RCS: @(#) $Id: README,v 1.12 2001/07/05 17:23:53 hobbs Exp $ +RCS: @(#) $Id: README,v 1.12.2.1 2002/06/10 05:38:26 wolfsuit Exp $ How To Compile And Install Tk: ------------------------------ @@ -44,13 +44,13 @@ How To Compile And Install Tk: type "./configure -help" or refer to the autoconf documentation (not included here). Tk's "configure" script supports the following special switches in addition to the standard ones: - --enable-threads Tk on Unix currently does not support - threaded builds. --with-tcl=DIR Specifies the directory containing the Tcl binaries and Tcl's platform-dependent configuration information. By default the Tcl directory is assumed to be in the location given by (a) above. + --enable-threads If this switch is set, Tcl will compile + itself with multithreading support. --enable-shared If this switch is specified, Tk will compile itself as a shared library if it can figure out how to do that on this platform. This @@ -58,6 +58,12 @@ How To Compile And Install Tk: how to build shared libraries. --disable-shared If this switch is specified, Tk will compile itself as a static library. + --enable-symbols build with debugging symbols + --disable-symbols build without debugging symbols + --enable-64bit enable 64bit support (where applicable) + --disable-64bit disable 64bit support (where applicable) + --enable-64bit-vis enable 64bit Sparc VIS support + --disable-64bit-vis disable 64bit Sparc VIS support Note: by default gcc will be used if it can be located on the PATH. if you want to use cc instead of gcc, set the CC environment variable diff --git a/unix/configure b/unix/configure index 5f87529..363a03e 100755 --- a/unix/configure +++ b/unix/configure @@ -16,6 +16,8 @@ ac_help="$ac_help ac_help="$ac_help --with-tcl directory containing tcl configuration (tclConfig.sh)" ac_help="$ac_help + --enable-shared build and link with shared libraries [--enable-shared]" +ac_help="$ac_help --enable-64bit enable 64bit support (where applicable)" ac_help="$ac_help --enable-64bit-vis enable 64bit Sparc VIS support" @@ -25,8 +27,6 @@ ac_help="$ac_help --enable-symbols build with debugging symbols [--disable-symbols]" ac_help="$ac_help --with-x use the X Window System" -ac_help="$ac_help - --enable-shared build and link with shared libraries [--enable-shared]" # Initialize some variables set by options. # The variables have the same names as the options, with @@ -541,7 +541,7 @@ fi TK_VERSION=8.4 TK_MAJOR_VERSION=8 TK_MINOR_VERSION=4 -TK_PATCH_LEVEL="a4" +TK_PATCH_LEVEL="a5" VERSION=${TK_VERSION} LOCALES="de en es fr" @@ -972,6 +972,12 @@ fi #define TCL_THREADS 1 EOF + # USE_THREAD_ALLOC tells us to try the special thread-based + # allocator that significantly reduces lock contention + cat >> confdefs.h <<\EOF +#define USE_THREAD_ALLOC 1 +EOF + cat >> confdefs.h <<\EOF #define _REENTRANT 1 EOF @@ -981,7 +987,7 @@ EOF EOF echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:985: checking for pthread_mutex_init in -lpthread" >&5 +echo "configure:991: checking for pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -989,7 +995,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -#line 993 "configure" +#line 999 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -1000,7 +1006,7 @@ int main() { pthread_mutex_init() ; return 0; } EOF -if { (eval echo configure:1004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1028,7 +1034,7 @@ fi # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1032: checking for __pthread_mutex_init in -lpthread" >&5 +echo "configure:1038: checking for __pthread_mutex_init in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1036,7 +1042,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -#line 1040 "configure" +#line 1046 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -1047,7 +1053,7 @@ int main() { __pthread_mutex_init() ; return 0; } EOF -if { (eval echo configure:1051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1075,7 +1081,7 @@ fi THREADS_LIBS=" -lpthread" else echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6 -echo "configure:1079: checking for pthread_mutex_init in -lpthreads" >&5 +echo "configure:1085: checking for pthread_mutex_init in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1083,7 +1089,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" cat > conftest.$ac_ext <<EOF -#line 1087 "configure" +#line 1093 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -1094,7 +1100,7 @@ int main() { pthread_mutex_init() ; return 0; } EOF -if { (eval echo configure:1098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1120,7 +1126,7 @@ fi THREADS_LIBS=" -lpthreads" else echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6 -echo "configure:1124: checking for pthread_mutex_init in -lc" >&5 +echo "configure:1130: checking for pthread_mutex_init in -lc" >&5 ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1128,7 +1134,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <<EOF -#line 1132 "configure" +#line 1138 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -1139,7 +1145,7 @@ int main() { pthread_mutex_init() ; return 0; } EOF -if { (eval echo configure:1143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1162,7 +1168,7 @@ fi if test "$tcl_ok" = "no"; then echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6 -echo "configure:1166: checking for pthread_mutex_init in -lc_r" >&5 +echo "configure:1172: checking for pthread_mutex_init in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1170,7 +1176,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <<EOF -#line 1174 "configure" +#line 1180 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -1181,7 +1187,7 @@ int main() { pthread_mutex_init() ; return 0; } EOF -if { (eval echo configure:1185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1219,12 +1225,12 @@ fi for ac_func in pthread_attr_setstacksize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1223: checking for $ac_func" >&5 +echo "configure:1229: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1228 "configure" +#line 1234 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -1247,7 +1253,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:1251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1286,18 +1292,18 @@ done if test -z "$no_pipe"; then if test -n "$GCC"; then echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6 -echo "configure:1290: checking if the compiler understands -pipe" >&5 +echo "configure:1296: checking if the compiler understands -pipe" >&5 OLDCC="$CC" CC="$CC -pipe" cat > conftest.$ac_ext <<EOF -#line 1294 "configure" +#line 1300 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:1301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1307: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -1312,6 +1318,281 @@ fi fi #-------------------------------------------------------------------- +# Detect what compiler flags to set for 64-bit support. +#-------------------------------------------------------------------- + + + echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6 +echo "configure:1327: checking for required early compiler flags" >&5 + tcl_flags="" + + if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1334 "configure" +#include "confdefs.h" +#include <stdlib.h> +int main() { +char *p = (char *)strtoll; char *q = (char *)strtoull; +; return 0; } +EOF +if { (eval echo configure:1341: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_flag__isoc99_source=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext <<EOF +#line 1349 "configure" +#include "confdefs.h" +#define _ISOC99_SOURCE 1 +#include <stdlib.h> +int main() { +char *p = (char *)strtoll; char *q = (char *)strtoull; +; return 0; } +EOF +if { (eval echo configure:1357: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_flag__isoc99_source=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_flag__isoc99_source=no +fi +rm -f conftest* +fi +rm -f conftest* +fi + + if test "x${tcl_cv_flag__isoc99_source}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define _ISOC99_SOURCE 1 +EOF + + tcl_flags="$tcl_flags _ISOC99_SOURCE" + fi + + if eval "test \"`echo '$''{'tcl_cv_flag__largefile64_source'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1383 "configure" +#include "confdefs.h" +#include <sys/stat.h> +int main() { +struct stat64 buf; int i = stat64("/", &buf); +; return 0; } +EOF +if { (eval echo configure:1390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_flag__largefile64_source=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext <<EOF +#line 1398 "configure" +#include "confdefs.h" +#define _LARGEFILE64_SOURCE 1 +#include <sys/stat.h> +int main() { +struct stat64 buf; int i = stat64("/", &buf); +; return 0; } +EOF +if { (eval echo configure:1406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_flag__largefile64_source=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_flag__largefile64_source=no +fi +rm -f conftest* +fi +rm -f conftest* +fi + + if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define _LARGEFILE64_SOURCE 1 +EOF + + tcl_flags="$tcl_flags _LARGEFILE64_SOURCE" + fi + if test "x${tcl_flags}" = "x" ; then + echo "$ac_t""none" 1>&6 + else + echo "$ac_t""${tcl_flags}" 1>&6 + fi + + + echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6 +echo "configure:1435: checking for 64-bit integer type" >&5 + if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 1441 "configure" +#include "confdefs.h" + +int main() { +__int64 value = (__int64) 0; +; return 0; } +EOF +if { (eval echo configure:1448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_type_64bit=__int64 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_type_64bit=none + if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } +else + cat > conftest.$ac_ext <<EOF +#line 1460 "configure" +#include "confdefs.h" +#include <unistd.h> + int main() {exit(!(sizeof(long long) > sizeof(long)));} + +EOF +if { (eval echo configure:1466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + tcl_cv_type_64bit="long long" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -fr conftest* +fi + +fi +rm -f conftest* +fi + + if test "${tcl_cv_type_64bit}" = none ; then + echo "$ac_t""using long" 1>&6 + else + cat >> confdefs.h <<EOF +#define TCL_WIDE_INT_TYPE ${tcl_cv_type_64bit} +EOF + + echo "$ac_t""${tcl_cv_type_64bit}" 1>&6 + + # Now check for auxiliary declarations + echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6 +echo "configure:1491: checking for struct dirent64" >&5 + if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 1497 "configure" +#include "confdefs.h" +#include <sys/types.h> +#include <sys/dirent.h> +int main() { +struct dirent64 p; +; return 0; } +EOF +if { (eval echo configure:1505: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_struct_dirent64=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_struct_dirent64=no +fi +rm -f conftest* +fi + + if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_STRUCT_DIRENT64 1 +EOF + + fi + echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6 + + echo $ac_n "checking for struct stat64""... $ac_c" 1>&6 +echo "configure:1526: checking for struct stat64" >&5 + if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 1532 "configure" +#include "confdefs.h" +#include <sys/stat.h> +int main() { +struct stat64 p; + +; return 0; } +EOF +if { (eval echo configure:1540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_struct_stat64=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_struct_stat64=no +fi +rm -f conftest* +fi + + if test "x${tcl_cv_struct_stat64}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_STRUCT_STAT64 1 +EOF + + fi + echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6 + + echo $ac_n "checking for off64_t""... $ac_c" 1>&6 +echo "configure:1561: checking for off64_t" >&5 + if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 1567 "configure" +#include "confdefs.h" +#include <sys/types.h> +int main() { +off64_t offset; + +; return 0; } +EOF +if { (eval echo configure:1575: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + tcl_cv_type_off64_t=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + tcl_cv_type_off64_t=no +fi +rm -f conftest* +fi + + if test "x${tcl_cv_type_off64_t}" = "xyes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_TYPE_OFF64_T 1 +EOF + + fi + echo "$ac_t""${tcl_cv_type_off64_t}" 1>&6 + fi + +#-------------------------------------------------------------------- # Find and load the tclConfig.sh file #-------------------------------------------------------------------- @@ -1332,7 +1613,7 @@ if test "${with_tcl+set}" = set; then fi echo $ac_n "checking for Tcl configuration""... $ac_c" 1>&6 -echo "configure:1336: checking for Tcl configuration" >&5 +echo "configure:1617: checking for Tcl configuration" >&5 if eval "test \"`echo '$''{'ac_cv_c_tclconfig'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1405,7 +1686,7 @@ fi echo $ac_n "checking for existence of $TCL_BIN_DIR/tclConfig.sh""... $ac_c" 1>&6 -echo "configure:1409: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5 +echo "configure:1690: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5 if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then echo "$ac_t""loading" 1>&6 @@ -1459,11 +1740,43 @@ echo "configure:1409: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5 #-------------------------------------------------------------------- + echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 +echo "configure:1745: checking how to build libraries" >&5 + # Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + tcl_ok=$enableval +else + tcl_ok=yes +fi + + + if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + tcl_ok=$enableval + else + tcl_ok=yes + fi + + if test "$tcl_ok" = "yes" ; then + echo "$ac_t""shared" 1>&6 + SHARED_BUILD=1 + else + echo "$ac_t""static" 1>&6 + SHARED_BUILD=0 + cat >> confdefs.h <<\EOF +#define STATIC_BUILD 1 +EOF + + fi + + + # Step 0.a: Enable 64 bit support? echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6 -echo "configure:1467: checking if 64bit support is requested" >&5 +echo "configure:1780: checking if 64bit support is requested" >&5 # Check whether --enable-64bit or --disable-64bit was given. if test "${enable_64bit+set}" = set; then enableval="$enable_64bit" @@ -1483,7 +1796,7 @@ fi # Step 0.b: Enable Solaris 64 bit VIS support? echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6 -echo "configure:1487: checking if 64bit Sparc VIS support is requested" >&5 +echo "configure:1800: checking if 64bit Sparc VIS support is requested" >&5 # Check whether --enable-64bit-vis or --disable-64bit-vis was given. if test "${enable_64bit_vis+set}" = set; then enableval="$enable_64bit_vis" @@ -1507,7 +1820,7 @@ fi # there are a few systems, like Next, where this doesn't work. echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6 -echo "configure:1511: checking system version (for dynamic loading)" >&5 +echo "configure:1824: checking system version (for dynamic loading)" >&5 if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` else @@ -1533,7 +1846,7 @@ echo "configure:1511: checking system version (for dynamic loading)" >&5 # Linux can use either -ldl or -ldld for dynamic loading. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:1537: checking for dlopen in -ldl" >&5 +echo "configure:1850: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1541,7 +1854,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <<EOF -#line 1545 "configure" +#line 1858 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -1552,7 +1865,7 @@ int main() { dlopen() ; return 0; } EOF -if { (eval echo configure:1556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1596,7 +1909,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1600: checking for $ac_word" >&5 +echo "configure:1913: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1652,6 +1965,7 @@ fi LD_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}' fi + # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then if test "$GCC" = "yes" ; then echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 @@ -1701,7 +2015,7 @@ fi # known GMT value. echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:1705: checking for gettimeofday in -lbsd" >&5 +echo "configure:2019: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1709,7 +2023,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <<EOF -#line 1713 "configure" +#line 2027 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -1720,7 +2034,7 @@ int main() { gettimeofday() ; return 0; } EOF -if { (eval echo configure:1724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1748,6 +2062,17 @@ fi EOF fi + + # Check to enable 64-bit flags for compiler/linker + if test "$do64bit" = "yes" ; then + if test "$GCC" = "yes" ; then + echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 + else + do64bit_ok=yes + EXTRA_CFLAGS="-q64" + LDFLAGS="-q64" + fi + fi ;; BSD/OS-2.1*|BSD/OS-3*) SHLIB_CFLAGS="" @@ -1780,9 +2105,15 @@ EOF LD_SEARCH_FLAGS="" ;; HP-UX-*.11.*) + # Use updated header definitions where possible + cat >> confdefs.h <<\EOF +#define _XOPEN_SOURCE_EXTENDED 1 +EOF + + SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:1786: checking for shl_load in -ldld" >&5 +echo "configure:2117: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1790,7 +2121,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <<EOF -#line 1794 "configure" +#line 2125 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -1801,7 +2132,7 @@ int main() { shl_load() ; return 0; } EOF -if { (eval echo configure:1805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1825,12 +2156,14 @@ fi if test "$tcl_ok" = yes; then SHLIB_CFLAGS="+z" SHLIB_LD="ld -b" - SHLIB_LD_LIBS="" + SHLIB_LD_LIBS='${LIBS}' DL_OBJS="tclLoadShl.o" DL_LIBS="-ldld" LDFLAGS="-Wl,-E" LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' fi + + # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then if test "$GCC" = "yes" ; then echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2 @@ -1844,7 +2177,7 @@ fi HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:1848: checking for shl_load in -ldld" >&5 +echo "configure:2181: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1852,7 +2185,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <<EOF -#line 1856 "configure" +#line 2189 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -1863,7 +2196,7 @@ int main() { shl_load() ; return 0; } EOF -if { (eval echo configure:1867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1942,7 +2275,7 @@ fi ;; IRIX64-6.*) SHLIB_CFLAGS="" - SHLIB_LD="ld -32 -shared -rdata_shared" + SHLIB_LD="ld -n32 -shared -rdata_shared" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" @@ -1970,17 +2303,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:1974: checking for dld.h" >&5 +echo "configure:2307: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1979 "configure" +#line 2312 "configure" #include "confdefs.h" #include <dld.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2317: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2037,17 +2370,17 @@ fi else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dld.h""... $ac_c" 1>&6 -echo "configure:2041: checking for dld.h" >&5 +echo "configure:2374: checking for dld.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2046 "configure" +#line 2379 "configure" #include "confdefs.h" #include <dld.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2051: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2384: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2102,17 +2435,17 @@ fi # Not available on all versions: check for include file. ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:2106: checking for dlfcn.h" >&5 +echo "configure:2439: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2111 "configure" +#line 2444 "configure" #include "confdefs.h" #include <dlfcn.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2116: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2139,9 +2472,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then LDFLAGS="" LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' echo $ac_n "checking for ELF""... $ac_c" 1>&6 -echo "configure:2143: checking for ELF" >&5 +echo "configure:2476: checking for ELF" >&5 cat > conftest.$ac_ext <<EOF -#line 2145 "configure" +#line 2478 "configure" #include "confdefs.h" #ifdef __ELF__ @@ -2193,13 +2526,19 @@ fi DL_OBJS="tclLoadDl.o" DL_LIBS="" LDFLAGS="-export-dynamic" - LD_SEARCH_FLAGS="" - - # FreeBSD doesn't handle version numbers with dots. - - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' - TCL_LIB_VERSIONS_OK=nodots + LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + if test "${TCL_THREADS}" = "1" ; then + EXTRA_CFLAGS="-pthread" + LDFLAGS="$LDFLAGS -pthread" + fi + case $system in + FreeBSD-3.*) + # FreeBSD-3 doesn't handle version numbers with dots. + UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' + TCL_LIB_VERSIONS_OK=nodots + ;; + esac ;; Rhapsody-*|Darwin-*) SHLIB_CFLAGS="-fno-common" @@ -2246,7 +2585,11 @@ EOF OSF1-1.*) # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 SHLIB_CFLAGS="-fPIC" - SHLIB_LD="ld -shared" + if test "$SHARED_BUILD" = "1" ; then + SHLIB_LD="ld -shared" + else + SHLIB_LD="ld -non_shared" + fi SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" @@ -2257,7 +2600,11 @@ EOF OSF1-V*) # Digital OSF/1 SHLIB_CFLAGS="" - SHLIB_LD='ld -shared -expect_unresolved "*"' + if test "$SHARED_BUILD" = "1" ; then + SHLIB_LD='ld -shared -expect_unresolved "*"' + else + SHLIB_LD='ld -non_shared -expect_unresolved "*"' + fi SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" @@ -2360,6 +2707,10 @@ EOF #define _REENTRANT 1 EOF + cat >> confdefs.h <<\EOF +#define _POSIX_PTHREAD_SEMANTICS 1 +EOF + SHLIB_CFLAGS="-KPIC" SHLIB_LD="/usr/ccs/bin/ld -G -z text" @@ -2387,11 +2738,16 @@ EOF #define _REENTRANT 1 EOF + cat >> confdefs.h <<\EOF +#define _POSIX_PTHREAD_SEMANTICS 1 +EOF + SHLIB_CFLAGS="-KPIC" SHLIB_LD="/usr/ccs/bin/ld -G -z text" LDFLAGS="" + # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then arch=`isainfo` if test "$arch" = "sparcv9 sparc" ; then @@ -2449,17 +2805,17 @@ EOF # that don't grok the -Bexport option. Test that it does. hold_ldflags=$LDFLAGS echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6 -echo "configure:2453: checking for ld accepts -Bexport flag" >&5 +echo "configure:2809: checking for ld accepts -Bexport flag" >&5 LDFLAGS="${LDFLAGS} -Wl,-Bexport" cat > conftest.$ac_ext <<EOF -#line 2456 "configure" +#line 2812 "configure" #include "confdefs.h" int main() { int i; ; return 0; } EOF -if { (eval echo configure:2463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* found=yes else @@ -2505,9 +2861,9 @@ rm -f conftest* if test "x$DL_OBJS" = "xtclLoadAout.o" ; then echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6 -echo "configure:2509: checking sys/exec.h" >&5 +echo "configure:2865: checking sys/exec.h" >&5 cat > conftest.$ac_ext <<EOF -#line 2511 "configure" +#line 2867 "configure" #include "confdefs.h" #include <sys/exec.h> int main() { @@ -2525,7 +2881,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:2529: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2885: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -2543,9 +2899,9 @@ EOF else echo $ac_n "checking a.out.h""... $ac_c" 1>&6 -echo "configure:2547: checking a.out.h" >&5 +echo "configure:2903: checking a.out.h" >&5 cat > conftest.$ac_ext <<EOF -#line 2549 "configure" +#line 2905 "configure" #include "confdefs.h" #include <a.out.h> int main() { @@ -2563,7 +2919,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:2567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -2581,9 +2937,9 @@ EOF else echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6 -echo "configure:2585: checking sys/exec_aout.h" >&5 +echo "configure:2941: checking sys/exec_aout.h" >&5 cat > conftest.$ac_ext <<EOF -#line 2587 "configure" +#line 2943 "configure" #include "confdefs.h" #include <sys/exec_aout.h> int main() { @@ -2601,7 +2957,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:2605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tcl_ok=usable else @@ -2698,7 +3054,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:2702: checking for build with symbols" >&5 +echo "configure:3058: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -2742,12 +3098,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:2746: checking for sin" >&5 +echo "configure:3102: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2751 "configure" +#line 3107 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char sin(); below. */ @@ -2770,7 +3126,7 @@ sin(); ; return 0; } EOF -if { (eval echo configure:2774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -2791,7 +3147,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:2795: checking for main in -lieee" >&5 +echo "configure:3151: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2799,14 +3155,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <<EOF -#line 2803 "configure" +#line 3159 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:2810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2837,7 +3193,7 @@ fi libbsd=no if test "`uname -s`" = "AIX" ; then echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6 -echo "configure:2841: checking for gettimeofday in -lbsd" >&5 +echo "configure:3197: checking for gettimeofday in -lbsd" >&5 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2845,7 +3201,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <<EOF -#line 2849 "configure" +#line 3205 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -2856,7 +3212,7 @@ int main() { gettimeofday() ; return 0; } EOF -if { (eval echo configure:2860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2887,9 +3243,9 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking stdlib.h""... $ac_c" 1>&6 -echo "configure:2891: checking stdlib.h" >&5 +echo "configure:3247: checking stdlib.h" >&5 cat > conftest.$ac_ext <<EOF -#line 2893 "configure" +#line 3249 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -2904,7 +3260,7 @@ fi rm -f conftest* cat > conftest.$ac_ext <<EOF -#line 2908 "configure" +#line 3264 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -2918,7 +3274,7 @@ fi rm -f conftest* cat > conftest.$ac_ext <<EOF -#line 2922 "configure" +#line 3278 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -2950,16 +3306,16 @@ echo "$ac_t""$tk_ok" 1>&6 #-------------------------------------------------------------------- echo $ac_n "checking fd_set and sys/select""... $ac_c" 1>&6 -echo "configure:2954: checking fd_set and sys/select" >&5 +echo "configure:3310: checking fd_set and sys/select" >&5 cat > conftest.$ac_ext <<EOF -#line 2956 "configure" +#line 3312 "configure" #include "confdefs.h" #include <sys/types.h> int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:2963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tk_ok=yes else @@ -2971,7 +3327,7 @@ fi rm -f conftest* if test $tk_ok = no; then cat > conftest.$ac_ext <<EOF -#line 2975 "configure" +#line 3331 "configure" #include "confdefs.h" #include <sys/select.h> EOF @@ -3003,12 +3359,12 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3007: checking for ANSI C header files" >&5 +echo "configure:3363: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3012 "configure" +#line 3368 "configure" #include "confdefs.h" #include <stdlib.h> #include <stdarg.h> @@ -3016,7 +3372,7 @@ else #include <float.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3020: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3376: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3033,7 +3389,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext <<EOF -#line 3037 "configure" +#line 3393 "configure" #include "confdefs.h" #include <string.h> EOF @@ -3051,7 +3407,7 @@ 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 <<EOF -#line 3055 "configure" +#line 3411 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -3072,7 +3428,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext <<EOF -#line 3076 "configure" +#line 3432 "configure" #include "confdefs.h" #include <ctype.h> #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -3083,7 +3439,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:3087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -3107,12 +3463,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:3111: checking for mode_t" >&5 +echo "configure:3467: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3116 "configure" +#line 3472 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -3140,12 +3496,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:3144: checking for pid_t" >&5 +echo "configure:3500: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3149 "configure" +#line 3505 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -3173,12 +3529,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3177: checking for size_t" >&5 +echo "configure:3533: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3182 "configure" +#line 3538 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -3206,12 +3562,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:3210: checking for uid_t in sys/types.h" >&5 +echo "configure:3566: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3215 "configure" +#line 3571 "configure" #include "confdefs.h" #include <sys/types.h> EOF @@ -3248,17 +3604,17 @@ for ac_hdr in sys/time.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3252: checking for $ac_hdr" >&5 +echo "configure:3608: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3257 "configure" +#line 3613 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3262: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3618: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3285,12 +3641,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3289: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:3645: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3294 "configure" +#line 3650 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/time.h> @@ -3299,7 +3655,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:3303: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -3325,16 +3681,16 @@ fi #------------------------------------------- echo $ac_n "checking pw_gecos in struct pwd""... $ac_c" 1>&6 -echo "configure:3329: checking pw_gecos in struct pwd" >&5 +echo "configure:3685: checking pw_gecos in struct pwd" >&5 cat > conftest.$ac_ext <<EOF -#line 3331 "configure" +#line 3687 "configure" #include "confdefs.h" #include <pwd.h> int main() { struct passwd pwd; pwd.pw_gecos; ; return 0; } EOF -if { (eval echo configure:3338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* tk_ok=yes else @@ -3367,7 +3723,7 @@ fi # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:3371: checking for X" >&5 +echo "configure:3727: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -3429,12 +3785,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext <<EOF -#line 3433 "configure" +#line 3789 "configure" #include "confdefs.h" #include <$x_direct_test_include> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3794: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3503,14 +3859,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <<EOF -#line 3507 "configure" +#line 3863 "configure" #include "confdefs.h" int main() { ${x_direct_test_function}() ; return 0; } EOF -if { (eval echo configure:3514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -3600,12 +3956,12 @@ fi if test "$no_x" = ""; then if test "$x_includes" = ""; then cat > conftest.$ac_ext <<EOF -#line 3604 "configure" +#line 3960 "configure" #include "confdefs.h" #include <X11/XIntrinsic.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3609: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3965: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3625,15 +3981,15 @@ rm -f conftest* fi if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then echo $ac_n "checking for X11 header files""... $ac_c" 1>&6 -echo "configure:3629: checking for X11 header files" >&5 +echo "configure:3985: checking for X11 header files" >&5 XINCLUDES="# no special path needed" cat > conftest.$ac_ext <<EOF -#line 3632 "configure" +#line 3988 "configure" #include "confdefs.h" #include <X11/Intrinsic.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3993: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3669,7 +4025,7 @@ rm -f conftest* if test "$no_x" = yes; then echo $ac_n "checking for X11 libraries""... $ac_c" 1>&6 -echo "configure:3673: checking for X11 libraries" >&5 +echo "configure:4029: checking for X11 libraries" >&5 XLIBSW=nope dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib" for i in $dirs ; do @@ -3689,7 +4045,7 @@ echo "configure:3673: checking for X11 libraries" >&5 fi if test "$XLIBSW" = nope ; then echo $ac_n "checking for XCreateWindow in -lXwindow""... $ac_c" 1>&6 -echo "configure:3693: checking for XCreateWindow in -lXwindow" >&5 +echo "configure:4049: checking for XCreateWindow in -lXwindow" >&5 ac_lib_var=`echo Xwindow'_'XCreateWindow | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3697,7 +4053,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXwindow $LIBS" cat > conftest.$ac_ext <<EOF -#line 3701 "configure" +#line 4057 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3708,7 +4064,7 @@ int main() { XCreateWindow() ; return 0; } EOF -if { (eval echo configure:3712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3793,7 +4149,7 @@ esac #-------------------------------------------------------------------- echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6 -echo "configure:3797: checking for main in -lXbsd" >&5 +echo "configure:4153: checking for main in -lXbsd" >&5 ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3801,14 +4157,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lXbsd $LIBS" cat > conftest.$ac_ext <<EOF -#line 3805 "configure" +#line 4161 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:3812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3831,12 +4187,12 @@ fi tk_checkBoth=0 echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:3835: checking for connect" >&5 +echo "configure:4191: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3840 "configure" +#line 4196 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect(); below. */ @@ -3859,7 +4215,7 @@ connect(); ; return 0; } EOF -if { (eval echo configure:3863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -3881,7 +4237,7 @@ fi if test "$tk_checkSocket" = 1; then echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6 -echo "configure:3885: checking for main in -lsocket" >&5 +echo "configure:4241: checking for main in -lsocket" >&5 ac_lib_var=`echo socket'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3889,14 +4245,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <<EOF -#line 3893 "configure" +#line 4249 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:3900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3922,12 +4278,12 @@ if test "$tk_checkBoth" = 1; then tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" echo $ac_n "checking for accept""... $ac_c" 1>&6 -echo "configure:3926: checking for accept" >&5 +echo "configure:4282: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3931 "configure" +#line 4287 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char accept(); below. */ @@ -3950,7 +4306,7 @@ accept(); ; return 0; } EOF -if { (eval echo configure:3954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else @@ -3972,12 +4328,12 @@ fi fi echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:3976: checking for gethostbyname" >&5 +echo "configure:4332: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3981 "configure" +#line 4337 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname(); below. */ @@ -4000,7 +4356,7 @@ gethostbyname(); ; return 0; } EOF -if { (eval echo configure:4004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -4018,7 +4374,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6 -echo "configure:4022: checking for main in -lnsl" >&5 +echo "configure:4378: checking for main in -lnsl" >&5 ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4026,14 +4382,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <<EOF -#line 4030 "configure" +#line 4386 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:4037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4073,13 +4429,13 @@ LIBS="$LIBS$THREADS_LIBS" if test -d /usr/include/mit ; then echo $ac_n "checking MIT X libraries""... $ac_c" 1>&6 -echo "configure:4077: checking MIT X libraries" >&5 +echo "configure:4433: checking MIT X libraries" >&5 tk_oldCFlags=$CFLAGS CFLAGS="$CFLAGS -I/usr/include/mit" tk_oldLibs=$LIBS LIBS="$LIBS -lX11-mit" cat > conftest.$ac_ext <<EOF -#line 4083 "configure" +#line 4439 "configure" #include "confdefs.h" #include <X11/Xlib.h> @@ -4090,7 +4446,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 @@ -4117,12 +4473,12 @@ fi MATH_LIBS="" echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:4121: checking for sin" >&5 +echo "configure:4477: checking for sin" >&5 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4126 "configure" +#line 4482 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char sin(); below. */ @@ -4145,7 +4501,7 @@ sin(); ; return 0; } EOF -if { (eval echo configure:4149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -4166,7 +4522,7 @@ MATH_LIBS="-lm" fi echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6 -echo "configure:4170: checking for main in -lieee" >&5 +echo "configure:4526: checking for main in -lieee" >&5 ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4174,14 +4530,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lieee $LIBS" cat > conftest.$ac_ext <<EOF -#line 4178 "configure" +#line 4534 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:4185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4208,14 +4564,14 @@ fi #-------------------------------------------------------------------- echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:4212: checking whether char is unsigned" >&5 +echo "configure:4568: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <<EOF -#line 4219 "configure" +#line 4575 "configure" #include "confdefs.h" #ifdef __CHAR_UNSIGNED__ yes @@ -4237,7 +4593,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <<EOF -#line 4241 "configure" +#line 4597 "configure" #include "confdefs.h" /* volatile prevents gcc2 from optimizing the test away on sparcs. */ #if !defined(__STDC__) || __STDC__ != 1 @@ -4247,7 +4603,7 @@ main() { volatile char c = 255; exit(c < 0); } EOF -if { (eval echo configure:4251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -4280,12 +4636,12 @@ fi echo $ac_n "checking for strtod""... $ac_c" 1>&6 -echo "configure:4284: checking for strtod" >&5 +echo "configure:4640: checking for strtod" >&5 if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4289 "configure" +#line 4645 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char strtod(); below. */ @@ -4308,7 +4664,7 @@ strtod(); ; return 0; } EOF -if { (eval echo configure:4312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strtod=yes" else @@ -4330,12 +4686,12 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 -echo "configure:4334: checking for Solaris2.4/Tru64 strtod bugs" >&5 +echo "configure:4690: checking for Solaris2.4/Tru64 strtod bugs" >&5 if test "$cross_compiling" = yes; then tcl_ok=0 else cat > conftest.$ac_ext <<EOF -#line 4339 "configure" +#line 4695 "configure" #include "confdefs.h" extern double strtod(); @@ -4355,7 +4711,7 @@ else exit(0); } EOF -if { (eval echo configure:4359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then tcl_ok=1 else @@ -4385,38 +4741,6 @@ EOF # building libtk as a shared library instead of a static library. #-------------------------------------------------------------------- - - echo $ac_n "checking how to build libraries""... $ac_c" 1>&6 -echo "configure:4391: checking how to build libraries" >&5 - # Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - tcl_ok=$enableval -else - tcl_ok=yes -fi - - - if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - tcl_ok=$enableval - else - tcl_ok=yes - fi - - if test "$tcl_ok" = "yes" ; then - echo "$ac_t""shared" 1>&6 - SHARED_BUILD=1 - else - echo "$ac_t""static" 1>&6 - SHARED_BUILD=0 - cat >> confdefs.h <<\EOF -#define STATIC_BUILD 1 -EOF - - fi - - eval eval "TK_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX}" eval eval "TK_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}" diff --git a/unix/configure.in b/unix/configure.in index 42a2a8d..9293388 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,14 +3,14 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tk installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.63.2.1 2002/02/05 02:25:18 wolfsuit Exp $ +# RCS: @(#) $Id: configure.in,v 1.63.2.2 2002/06/10 05:38:27 wolfsuit Exp $ AC_INIT(../generic/tk.h) TK_VERSION=8.4 TK_MAJOR_VERSION=8 TK_MINOR_VERSION=4 -TK_PATCH_LEVEL="a4" +TK_PATCH_LEVEL="a5" VERSION=${TK_VERSION} LOCALES="de en es fr" @@ -73,6 +73,14 @@ fi fi #-------------------------------------------------------------------- +# Detect what compiler flags to set for 64-bit support. +#-------------------------------------------------------------------- + +SC_TCL_EARLY_FLAGS + +SC_TCL_64BIT_FLAGS + +#-------------------------------------------------------------------- # Find and load the tclConfig.sh file #-------------------------------------------------------------------- @@ -83,6 +91,8 @@ SC_LOAD_TCLCONFIG # Recompute the necessary flags to run the compiler #-------------------------------------------------------------------- +SC_ENABLE_SHARED + SC_CONFIG_CFLAGS SC_ENABLE_SYMBOLS @@ -340,8 +350,6 @@ SC_BUGGY_STRTOD # building libtk as a shared library instead of a static library. #-------------------------------------------------------------------- -SC_ENABLE_SHARED - eval eval "TK_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX}" eval eval "TK_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}" diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 76eeace..0ece801 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -365,6 +365,9 @@ AC_DEFUN(SC_ENABLE_THREADS, [ AC_MSG_RESULT(yes) TCL_THREADS=1 AC_DEFINE(TCL_THREADS) + # USE_THREAD_ALLOC tells us to try the special thread-based + # allocator that significantly reduces lock contention + AC_DEFINE(USE_THREAD_ALLOC) AC_DEFINE(_REENTRANT) AC_DEFINE(_THREAD_SAFE) AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no) @@ -575,7 +578,6 @@ AC_DEFUN(SC_ENABLE_LANGINFO, [ # Flags used when running the compiler in debug mode # CFLAGS_OPTIMIZE - # Flags used when running the compiler in optimize mode -# # EXTRA_CFLAGS # # Subst's the following vars: @@ -695,6 +697,7 @@ dnl AC_CHECK_TOOL(AR, ar, :) LD_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}' fi + # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then if test "$GCC" = "yes" ; then AC_MSG_WARN("64bit mode not supported with GCC on $system") @@ -748,6 +751,17 @@ dnl AC_CHECK_TOOL(AR, ar, :) MATH_LIBS="$MATH_LIBS -lbsd" AC_DEFINE(USE_DELTA_FOR_TZ) fi + + # Check to enable 64-bit flags for compiler/linker + if test "$do64bit" = "yes" ; then + if test "$GCC" = "yes" ; then + AC_MSG_WARN("64bit mode not supported with GCC on $system") + else + do64bit_ok=yes + EXTRA_CFLAGS="-q64" + LDFLAGS="-q64" + fi + fi ;; BSD/OS-2.1*|BSD/OS-3*) SHLIB_CFLAGS="" @@ -780,17 +794,22 @@ dnl AC_CHECK_TOOL(AR, ar, :) LD_SEARCH_FLAGS="" ;; HP-UX-*.11.*) + # Use updated header definitions where possible + AC_DEFINE(_XOPEN_SOURCE_EXTENDED) + SHLIB_SUFFIX=".sl" AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no) if test "$tcl_ok" = yes; then SHLIB_CFLAGS="+z" SHLIB_LD="ld -b" - SHLIB_LD_LIBS="" + SHLIB_LD_LIBS='${LIBS}' DL_OBJS="tclLoadShl.o" DL_LIBS="-ldld" LDFLAGS="-Wl,-E" LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' fi + + # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then if test "$GCC" = "yes" ; then AC_MSG_WARN("64bit mode not supported with GCC on $system") @@ -862,7 +881,7 @@ dnl AC_CHECK_TOOL(AR, ar, :) ;; IRIX64-6.*) SHLIB_CFLAGS="" - SHLIB_LD="ld -32 -shared -rdata_shared" + SHLIB_LD="ld -n32 -shared -rdata_shared" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" @@ -1003,13 +1022,19 @@ dnl AC_CHECK_TOOL(AR, ar, :) DL_OBJS="tclLoadDl.o" DL_LIBS="" LDFLAGS="-export-dynamic" - LD_SEARCH_FLAGS="" - - # FreeBSD doesn't handle version numbers with dots. - - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' - TCL_LIB_VERSIONS_OK=nodots + LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' + if test "${TCL_THREADS}" = "1" ; then + EXTRA_CFLAGS="-pthread" + LDFLAGS="$LDFLAGS -pthread" + fi + case $system in + FreeBSD-3.*) + # FreeBSD-3 doesn't handle version numbers with dots. + UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so' + TCL_LIB_VERSIONS_OK=nodots + ;; + esac ;; Rhapsody-*|Darwin-*) SHLIB_CFLAGS="-fno-common" @@ -1053,7 +1078,11 @@ dnl AC_CHECK_TOOL(AR, ar, :) OSF1-1.*) # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 SHLIB_CFLAGS="-fPIC" - SHLIB_LD="ld -shared" + if test "$SHARED_BUILD" = "1" ; then + SHLIB_LD="ld -shared" + else + SHLIB_LD="ld -non_shared" + fi SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" @@ -1064,7 +1093,11 @@ dnl AC_CHECK_TOOL(AR, ar, :) OSF1-V*) # Digital OSF/1 SHLIB_CFLAGS="" - SHLIB_LD='ld -shared -expect_unresolved "*"' + if test "$SHARED_BUILD" = "1" ; then + SHLIB_LD='ld -shared -expect_unresolved "*"' + else + SHLIB_LD='ld -non_shared -expect_unresolved "*"' + fi SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" @@ -1164,6 +1197,7 @@ dnl AC_CHECK_TOOL(AR, ar, :) # won't define thread-safe library routines. AC_DEFINE(_REENTRANT) + AC_DEFINE(_POSIX_PTHREAD_SEMANTICS) SHLIB_CFLAGS="-KPIC" SHLIB_LD="/usr/ccs/bin/ld -G -z text" @@ -1188,11 +1222,13 @@ dnl AC_CHECK_TOOL(AR, ar, :) # won't define thread-safe library routines. AC_DEFINE(_REENTRANT) + AC_DEFINE(_POSIX_PTHREAD_SEMANTICS) SHLIB_CFLAGS="-KPIC" SHLIB_LD="/usr/ccs/bin/ld -G -z text" LDFLAGS="" + # Check to enable 64-bit flags for compiler/linker if test "$do64bit" = "yes" ; then arch=`isainfo` if test "$arch" = "sparcv9 sparc" ; then @@ -1415,7 +1451,9 @@ dnl AC_CHECK_TOOL(AR, ar, :) # # Determine which interface to use to talk to the serial port. # Note that #include lines must begin in leftmost column for -# some compilers to recognize them as preprocessor directives. +# some compilers to recognize them as preprocessor directives, +# and some build environments have stdin not pointing at a +# pseudo-terminal (usually /dev/null instead.) # # Arguments: # none @@ -1423,6 +1461,7 @@ dnl AC_CHECK_TOOL(AR, ar, :) # Results: # # Defines only one of the following vars: +# HAVE_SYS_MODEM_H # USE_TERMIOS # USE_TERMIO # USE_SGTTY @@ -1430,13 +1469,13 @@ dnl AC_CHECK_TOOL(AR, ar, :) #-------------------------------------------------------------------- AC_DEFUN(SC_SERIAL_PORT, [ + AC_CHECK_HEADERS(sys/modem.h) AC_MSG_CHECKING([termios vs. termio vs. sgtty]) - + AC_CACHE_VAL(tcl_cv_api_serial, [ AC_TRY_RUN([ #include <termios.h> -main() -{ +int main() { struct termios t; if (tcgetattr(0, &t) == 0) { cfsetospeed(&t, 0); @@ -1444,32 +1483,25 @@ main() return 0; } return 1; -}], tk_ok=termios, tk_ok=no, tk_ok=no) - - if test $tk_ok = termios; then - AC_DEFINE(USE_TERMIOS) - else +}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no) + if test $tcl_cv_api_serial = no ; then AC_TRY_RUN([ #include <termio.h> -main() -{ +int main() { struct termio t; if (ioctl(0, TCGETA, &t) == 0) { t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB; return 0; } return 1; - }], tk_ok=termio, tk_ok=no, tk_ok=no) - - if test $tk_ok = termio; then - AC_DEFINE(USE_TERMIO) - else +}], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no) + fi + if test $tcl_cv_api_serial = no ; then AC_TRY_RUN([ #include <sgtty.h> -main() -{ +int main() { struct sgttyb t; if (ioctl(0, TIOCGETP, &t) == 0) { t.sg_ospeed = 0; @@ -1477,17 +1509,14 @@ main() return 0; } return 1; -}], tk_ok=sgtty, tk_ok=none, tk_ok=none) - - if test $tk_ok = sgtty; then - AC_DEFINE(USE_SGTTY) - else +}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none) + fi + if test $tcl_cv_api_serial = no ; then AC_TRY_RUN([ #include <termios.h> #include <errno.h> -main() -{ +int main() { struct termios t; if (tcgetattr(0, &t) == 0 || errno == ENOTTY || errno == ENXIO || errno == EINVAL) { @@ -1496,17 +1525,14 @@ main() return 0; } return 1; -}], tk_ok=termios, tk_ok=no, tk_ok=no) - - if test $tk_ok = termios; then - AC_DEFINE(USE_TERMIOS) - else +}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no) + fi + if test $tcl_cv_api_serial = no; then AC_TRY_RUN([ #include <termio.h> #include <errno.h> -main() -{ +int main() { struct termio t; if (ioctl(0, TCGETA, &t) == 0 || errno == ENOTTY || errno == ENXIO || errno == EINVAL) { @@ -1514,17 +1540,14 @@ main() return 0; } return 1; - }], tk_ok=termio, tk_ok=no, tk_ok=no) - - if test $tk_ok = termio; then - AC_DEFINE(USE_TERMIO) - else + }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no) + fi + if test $tcl_cv_api_serial = no; then AC_TRY_RUN([ #include <sgtty.h> #include <errno.h> -main() -{ +int main() { struct sgttyb t; if (ioctl(0, TIOCGETP, &t) == 0 || errno == ENOTTY || errno == ENXIO || errno == EINVAL) { @@ -1533,17 +1556,14 @@ main() return 0; } return 1; -}], tk_ok=sgtty, tk_ok=none, tk_ok=none) - - if test $tk_ok = sgtty; then - AC_DEFINE(USE_SGTTY) - fi - fi - fi - fi - fi - fi - AC_MSG_RESULT($tk_ok) +}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none) + fi]) + case $tcl_cv_api_serial in + termios) AC_DEFINE(USE_TERMIOS);; + termio) AC_DEFINE(USE_TERMIO);; + sgtty) AC_DEFINE(USE_SGTTY);; + esac + AC_MSG_RESULT($tcl_cv_api_serial) ]) #-------------------------------------------------------------------- @@ -1578,7 +1598,6 @@ main() #-------------------------------------------------------------------- AC_DEFUN(SC_MISSING_POSIX_HEADERS, [ - AC_MSG_CHECKING(dirent.h) AC_TRY_LINK([#include <sys/types.h> #include <dirent.h>], [ @@ -1817,46 +1836,53 @@ AC_DEFUN(SC_TIME_HANDLER, [ AC_CHECK_FUNCS(gmtime_r localtime_r) AC_MSG_CHECKING([tm_tzadj in struct tm]) - AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;], - [AC_DEFINE(HAVE_TM_TZADJ) - AC_MSG_RESULT(yes)], - AC_MSG_RESULT(no)) + AC_CACHE_VAL(tcl_cv_member_tm_tzadj, + AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;], + tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no)) + AC_MSG_RESULT($tcl_cv_member_tm_tzadj) + if test $tcl_cv_member_tm_tzadj = yes ; then + AC_DEFINE(HAVE_TM_TZADJ) + fi AC_MSG_CHECKING([tm_gmtoff in struct tm]) - AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_gmtoff;], - [AC_DEFINE(HAVE_TM_GMTOFF) - AC_MSG_RESULT(yes)], - AC_MSG_RESULT(no)) + AC_CACHE_VAL(tcl_cv_member_tm_gmtoff, + AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_gmtoff;], + tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no)) + AC_MSG_RESULT($tcl_cv_member_tm_gmtoff) + if test $tcl_cv_member_tm_gmtoff = yes ; then + AC_DEFINE(HAVE_TM_GMTOFF) + fi # # Its important to include time.h in this check, as some systems # (like convex) have timezone functions, etc. # - have_timezone=no AC_MSG_CHECKING([long timezone variable]) - AC_TRY_COMPILE([#include <time.h>], + AC_CACHE_VAL(tcl_cv_var_timezone, + AC_TRY_COMPILE([#include <time.h>], [extern long timezone; timezone += 1; exit (0);], - [have_timezone=yes + tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no)) + AC_MSG_RESULT($tcl_cv_timezone_long) + if test $tcl_cv_timezone_long = yes ; then + AC_DEFINE(HAVE_TIMEZONE_VAR) + else + # + # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. + # + AC_MSG_CHECKING([time_t timezone variable]) + AC_CACHE_VAL(tcl_cv_timezone_time, + AC_TRY_COMPILE([#include <time.h>], + [extern time_t timezone; + timezone += 1; + exit (0);], + tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no)) + AC_MSG_RESULT($tcl_cv_timezone_time) + if test $tcl_cv_timezone_time = yes ; then AC_DEFINE(HAVE_TIMEZONE_VAR) - AC_MSG_RESULT(yes)], - AC_MSG_RESULT(no)) - - # - # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. - # - if test "$have_timezone" = no; then - AC_MSG_CHECKING([time_t timezone variable]) - AC_TRY_COMPILE([#include <time.h>], - [extern time_t timezone; - timezone += 1; - exit (0);], - [AC_DEFINE(HAVE_TIMEZONE_VAR) - AC_MSG_RESULT(yes)], - AC_MSG_RESULT(no)) + fi fi - ]) #-------------------------------------------------------------------- @@ -1995,3 +2021,110 @@ AC_DEFUN(SC_TCL_LINK_LIBS, [ AC_SUBST(TCL_LIBS) AC_SUBST(MATH_LIBS) ]) + +#-------------------------------------------------------------------- +# SC_TCL_EARLY_FLAGS +# +# Check for what flags are needed to be passed so the correct OS +# features are available. +# +# Arguments: +# None +# +# Results: +# +# Might define the following vars: +# _ISOC99_SOURCE +# _LARGEFILE64_SOURCE +# +#-------------------------------------------------------------------- + +AC_DEFUN(SC_TCL_EARLY_FLAG,[ + AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]), + AC_TRY_COMPILE([$2], $3, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no, + AC_TRY_COMPILE([[#define ]$1[ 1 +]$2], $3, + [tcl_cv_flag_]translit($1,[A-Z],[a-z])=yes, + [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no))) + if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then + AC_DEFINE($1) + tcl_flags="$tcl_flags $1" + fi]) + +AC_DEFUN(SC_TCL_EARLY_FLAGS,[ + AC_MSG_CHECKING([for required early compiler flags]) + tcl_flags="" + SC_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include <stdlib.h>], + [char *p = (char *)strtoll; char *q = (char *)strtoull;]) + SC_TCL_EARLY_FLAG(_LARGEFILE64_SOURCE,[#include <sys/stat.h>], + [struct stat64 buf; int i = stat64("/", &buf);]) + if test "x${tcl_flags}" = "x" ; then + AC_MSG_RESULT(none) + else + AC_MSG_RESULT(${tcl_flags}) + fi]) + +#-------------------------------------------------------------------- +# SC_TCL_64BIT_FLAGS +# +# Check for what is defined in the way of 64-bit features. +# +# Arguments: +# None +# +# Results: +# +# Might define the following vars: +# TCL_WIDE_INT_IS_LONG +# TCL_WIDE_INT_TYPE +# HAVE_STRUCT_DIRENT64 +# HAVE_STRUCT_STAT64 +# HAVE_TYPE_OFF64_T +# +#-------------------------------------------------------------------- + +AC_DEFUN(SC_TCL_64BIT_FLAGS, [ + AC_MSG_CHECKING([for 64-bit integer type]) + AC_CACHE_VAL(tcl_cv_type_64bit,[ + AC_TRY_COMPILE(,[__int64 value = (__int64) 0;], + tcl_cv_type_64bit=__int64,tcl_cv_type_64bit=none + AC_TRY_RUN([#include <unistd.h> + int main() {exit(!(sizeof(long long) > sizeof(long)));} + ], tcl_cv_type_64bit="long long"))]) + if test "${tcl_cv_type_64bit}" = none ; then + AC_MSG_RESULT(using long) + else + AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit}) + AC_MSG_RESULT(${tcl_cv_type_64bit}) + + # Now check for auxiliary declarations + AC_MSG_CHECKING([for struct dirent64]) + AC_CACHE_VAL(tcl_cv_struct_dirent64,[ + AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/dirent.h>],[struct dirent64 p;], + tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)]) + if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then + AC_DEFINE(HAVE_STRUCT_DIRENT64) + fi + AC_MSG_RESULT(${tcl_cv_struct_dirent64}) + + AC_MSG_CHECKING([for struct stat64]) + AC_CACHE_VAL(tcl_cv_struct_stat64,[ + AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat64 p; +], + tcl_cv_struct_stat64=yes,tcl_cv_struct_stat64=no)]) + if test "x${tcl_cv_struct_stat64}" = "xyes" ; then + AC_DEFINE(HAVE_STRUCT_STAT64) + fi + AC_MSG_RESULT(${tcl_cv_struct_stat64}) + + AC_MSG_CHECKING([for off64_t]) + AC_CACHE_VAL(tcl_cv_type_off64_t,[ + AC_TRY_COMPILE([#include <sys/types.h>],[off64_t offset; +], + tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)]) + if test "x${tcl_cv_type_off64_t}" = "xyes" ; then + AC_DEFINE(HAVE_TYPE_OFF64_T) + fi + AC_MSG_RESULT(${tcl_cv_type_off64_t}) + fi]) diff --git a/unix/tk.spec b/unix/tk.spec index f282a16..a101073 100644 --- a/unix/tk.spec +++ b/unix/tk.spec @@ -1,7 +1,7 @@ -# $Id: tk.spec,v 1.7 2001/08/08 18:41:10 dgp Exp $ +# $Id: tk.spec,v 1.7.2.1 2002/06/10 05:38:27 wolfsuit Exp $ # This file is the basis for a binary Tk Linux RPM. -%define version 8.4a4 +%define version 8.4a5 %define directory /usr/local Summary: Tk graphical toolkit for the Tcl scripting language. @@ -10,11 +10,11 @@ Version: %{version} Release: 1 Copyright: BSD Group: Development/Languages -Source: ftp://ftp.scriptics.com/pub/tcl/tcl8_4/tk%{version}.tar.gz -URL: http://dev.scriptics.com/ -Packager: Scriptics Corporation +Source: http://prdownloads.sourceforge.net/tcl/tk%{version}-src.tar.gz +URL: http://www.tcl.tk/ +Packager: Carina Buildroot: /var/tmp/%{name}%{version} -Requires: XFree86-libs >= 3.3.3, XFree86-devel >= 3.3.3, tcl = 8.4a4 +Requires: XFree86-libs >= 3.3.3, XFree86-devel >= 3.3.3, tcl = 8.4a5 %description The Tcl (Tool Command Language) provides a powerful platform for diff --git a/unix/tkUnix3d.c b/unix/tkUnix3d.c index c3e4a74..9b66ffb 100644 --- a/unix/tkUnix3d.c +++ b/unix/tkUnix3d.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnix3d.c,v 1.5.8.2 2001/10/17 07:02:02 wolfsuit Exp $ + * RCS: @(#) $Id: tkUnix3d.c,v 1.5.8.3 2002/06/10 05:38:27 wolfsuit Exp $ */ #include <tk3d.h> @@ -294,6 +294,15 @@ Tk_3DHorizontalBevel(tkwin, drawable, border, x, y, width, height, for ( ; y < bottom; y++) { /* + * X Dimensions are 16-bit, so avoid wraparound or display errors + * by limiting these here. + */ + if (x1 < -32767) + x1 = -32767; + if (x2 > 32767) + x2 = 32767; + + /* * In some weird cases (such as large border widths for skinny * rectangles) x1 can be >= x2. Don't draw the lines * in these cases. diff --git a/unix/tkUnixDefault.h b/unix/tkUnixDefault.h index 957b2e9..367652f 100644 --- a/unix/tkUnixDefault.h +++ b/unix/tkUnixDefault.h @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixDefault.h,v 1.11.2.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkUnixDefault.h,v 1.11.2.2 2002/06/10 05:38:27 wolfsuit Exp $ */ #ifndef _TKUNIXDEFAULT @@ -354,6 +354,40 @@ #define DEF_MESSAGE_WIDTH "0" /* + * Defaults for panedwindows + */ + +#define DEF_PANEDWINDOW_BG_COLOR NORMAL_BG +#define DEF_PANEDWINDOW_BG_MONO WHITE +#define DEF_PANEDWINDOW_BORDERWIDTH "2" +#define DEF_PANEDWINDOW_CURSOR "" +#define DEF_PANEDWINDOW_HANDLEPAD "8" +#define DEF_PANEDWINDOW_HANDLESIZE "8" +#define DEF_PANEDWINDOW_HEIGHT "" +#define DEF_PANEDWINDOW_OPAQUERESIZE "0" +#define DEF_PANEDWINDOW_ORIENT "horizontal" +#define DEF_PANEDWINDOW_RELIEF "flat" +#define DEF_PANEDWINDOW_SASHCURSOR "" +#define DEF_PANEDWINDOW_SASHPAD "2" +#define DEF_PANEDWINDOW_SASHRELIEF "raised" +#define DEF_PANEDWINDOW_SASHWIDTH "2" +#define DEF_PANEDWINDOW_SHOWHANDLE "1" +#define DEF_PANEDWINDOW_WIDTH "" + +/* + * Defaults for panedwindow panes + */ + +#define DEF_PANEDWINDOW_PANE_AFTER "" +#define DEF_PANEDWINDOW_PANE_BEFORE "" +#define DEF_PANEDWINDOW_PANE_HEIGHT "" +#define DEF_PANEDWINDOW_PANE_MINSIZE "0" +#define DEF_PANEDWINDOW_PANE_PADX "0" +#define DEF_PANEDWINDOW_PANE_PADY "0" +#define DEF_PANEDWINDOW_PANE_STICKY "nsew" +#define DEF_PANEDWINDOW_PANE_WIDTH "" + +/* * Defaults for scales: */ diff --git a/unix/tkUnixEmbed.c b/unix/tkUnixEmbed.c index e996a0b..4f14937 100644 --- a/unix/tkUnixEmbed.c +++ b/unix/tkUnixEmbed.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixEmbed.c,v 1.3 1999/04/16 01:51:46 stanton Exp $ + * RCS: @(#) $Id: tkUnixEmbed.c,v 1.3.18.1 2002/06/10 05:38:27 wolfsuit Exp $ */ #include "tkInt.h" @@ -105,6 +105,7 @@ TkpUseWindow(interp, tkwin, string) * for tkwin; must be an integer value. */ { TkWindow *winPtr = (TkWindow *) tkwin; + TkWindow *usePtr; int id, anyError; Window parent; Tk_ErrorHandler handler; @@ -121,6 +122,15 @@ TkpUseWindow(interp, tkwin, string) } parent = (Window) id; + usePtr = (TkWindow *) Tk_IdToWindow(winPtr->display, parent); + if (usePtr != NULL) { + if (!(usePtr->flags & TK_CONTAINER)) { + Tcl_AppendResult(interp, "window \"", usePtr->pathName, + "\" doesn't have -container option set", (char *) NULL); + return TCL_ERROR; + } + } + /* * Tk sets the window colormap to the screen default colormap in * tkWindow.c:AllocWindow. This doesn't work well for embedded diff --git a/unix/tkUnixEvent.c b/unix/tkUnixEvent.c index 1a5832f..4c822b3 100644 --- a/unix/tkUnixEvent.c +++ b/unix/tkUnixEvent.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixEvent.c,v 1.3.18.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkUnixEvent.c,v 1.3.18.2 2002/06/10 05:38:27 wolfsuit Exp $ */ #include "tkInt.h" @@ -39,6 +39,9 @@ static void DisplayFileProc _ANSI_ARGS_((ClientData clientData, static void DisplaySetupProc _ANSI_ARGS_((ClientData clientData, int flags)); static void TransferXEventsToTcl _ANSI_ARGS_((Display *display)); +#ifdef TK_USE_INPUT_METHODS +static void OpenIM _ANSI_ARGS_((TkDisplay *dispPtr)); +#endif /* @@ -127,7 +130,11 @@ TkpOpenDisplay(display_name) return NULL; } dispPtr = (TkDisplay *) ckalloc(sizeof(TkDisplay)); + memset(dispPtr, 0, sizeof(TkDisplay)); dispPtr->display = display; +#ifdef TK_USE_INPUT_METHODS + OpenIM(dispPtr); +#endif Tcl_CreateFileHandler(ConnectionNumber(display), TCL_READABLE, DisplayFileProc, (ClientData) dispPtr); return dispPtr; @@ -144,24 +151,44 @@ TkpOpenDisplay(display_name) * None. * * Side effects: - * Deallocates the displayPtr. + * Deallocates the displayPtr and unix-specific resources. * *---------------------------------------------------------------------- */ void -TkpCloseDisplay(displayPtr) - TkDisplay *displayPtr; +TkpCloseDisplay(dispPtr) + TkDisplay *dispPtr; { - TkDisplay *dispPtr = (TkDisplay *) displayPtr; + TkSendCleanup(dispPtr); + + TkFreeXId(dispPtr); + + TkWmCleanup(dispPtr); + +#ifdef TK_USE_INPUT_METHODS +#if TK_XIM_SPOT + if (dispPtr->inputXfs) { + XFreeFontSet(dispPtr->display, dispPtr->inputXfs); + } +#endif +#if ! defined(SOLARIS2) || defined(HAVE_X11R6) + if (dispPtr->inputMethod) { + /* + * This causes core dumps on some systems (e.g. Solaris 2.3 as of + * 1/6/95), but is OK with X11R6 + */ + XCloseIM(dispPtr->inputMethod); + } +#endif +#endif if (dispPtr->display != 0) { - Tcl_DeleteFileHandler(ConnectionNumber(dispPtr->display)); - - (void) XSync(dispPtr->display, False); - (void) XCloseDisplay(dispPtr->display); + Tcl_DeleteFileHandler(ConnectionNumber(dispPtr->display)); + (void) XSync(dispPtr->display, False); + (void) XCloseDisplay(dispPtr->display); } - + ckfree((char *) dispPtr); } @@ -230,7 +257,6 @@ DisplaySetupProc(clientData, flags) *---------------------------------------------------------------------- */ - static void TransferXEventsToTcl(display) Display *display; @@ -285,8 +311,6 @@ DisplayCheckProc(clientData, flags) TransferXEventsToTcl(dispPtr->display); } } - - /* *---------------------------------------------------------------------- @@ -516,5 +540,74 @@ TkpSync(display) * Transfer events from the X event queue to the Tk event queue. */ TransferXEventsToTcl(display); +} +#ifdef TK_USE_INPUT_METHODS + +/* + *-------------------------------------------------------------- + * + * OpenIM -- + * + * Tries to open an X input method, associated with the + * given display. Right now we can only deal with a bare-bones + * input style: no preedit, and no status. + * + * Results: + * Stores the input method in dispPtr->inputMethod; if there isn't + * a suitable input method, then NULL is stored in dispPtr->inputMethod. + * + * Side effects: + * An input method gets opened. + * + *-------------------------------------------------------------- + */ + +static void +OpenIM(dispPtr) + TkDisplay *dispPtr; /* Tk's structure for the display. */ +{ + unsigned short i; + XIMStyles *stylePtr; + char *modifier_list; + + if ((modifier_list = XSetLocaleModifiers("")) == NULL) { + goto error; + } + + dispPtr->inputMethod = XOpenIM(dispPtr->display, NULL, NULL, NULL); + if (dispPtr->inputMethod == NULL) { + return; + } + + if ((XGetIMValues(dispPtr->inputMethod, XNQueryInputStyle, &stylePtr, + NULL) != NULL) || (stylePtr == NULL)) { + goto error; + } + for (i = 0; i < stylePtr->count_styles; i++) { + if (stylePtr->supported_styles[i] +#if TK_XIM_SPOT + == (XIMPreeditPosition | XIMStatusNothing) +#else + == (XIMPreeditNothing | XIMStatusNothing) +#endif + ) { + XFree(stylePtr); + return; + } + } + XFree(stylePtr); + + error: + if (dispPtr->inputMethod) { + /* + * This causes core dumps on some systems (e.g. Solaris 2.3 as of + * 1/6/95), but is OK with X11R6 + */ +#if ! defined (SOLARIS2) || defined (HAVE_X11R6) + XCloseIM(dispPtr->inputMethod); +#endif + dispPtr->inputMethod = NULL; + } } +#endif /* TK_USE_INPUT_METHODS */ diff --git a/unix/tkUnixFont.c b/unix/tkUnixFont.c index 4d711e8..56800d7 100644 --- a/unix/tkUnixFont.c +++ b/unix/tkUnixFont.c @@ -9,12 +9,13 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixFont.c,v 1.9 2001/06/04 03:07:54 hobbs Exp $ + * RCS: @(#) $Id: tkUnixFont.c,v 1.9.2.1 2002/06/10 05:38:27 wolfsuit Exp $ */ #include "tkUnixInt.h" #include "tkFont.h" #include <netinet/in.h> /* for htons() prototype */ +#include <arpa/inet.h> /* inet_ntoa() */ /* * The preferred font encodings. @@ -197,6 +198,7 @@ static EncodingAlias encodingAliases[] = { * Procedures used only in this file. */ +static void FontPkgCleanup _ANSI_ARGS_((ClientData clientData)); static FontFamily * AllocFontFamily _ANSI_ARGS_((Display *display, XFontStruct *fontStructPtr, int base)); static SubFont * CanUseFallback _ANSI_ARGS_((UnixFont *fontPtr, @@ -261,6 +263,44 @@ static int UtfToUcs2beProc _ANSI_ARGS_((ClientData clientData, /* *------------------------------------------------------------------------- * + * FontPkgCleanup -- + * + * This procedure is called when an application is created. It + * initializes all the structures that are used by the + * platform-dependent code on a per application basis. + * + * Results: + * None. + * + * Side effects: + * Releases thread-specific resources used by font pkg. + * + *------------------------------------------------------------------------- + */ + +static void +FontPkgCleanup(ClientData clientData) +{ + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) + Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + + if (tsdPtr->controlFamily.encoding != NULL) { + FontFamily *familyPtr = &tsdPtr->controlFamily; + int i; + + Tcl_FreeEncoding(familyPtr->encoding); + for (i = 0; i < FONTMAP_PAGES; i++) { + if (familyPtr->fontMap[i] != NULL) { + ckfree(familyPtr->fontMap[i]); + } + } + tsdPtr->controlFamily.encoding = NULL; + } +} + +/* + *------------------------------------------------------------------------- + * * TkpFontPkgInit -- * * This procedure is called when an application is created. It @@ -317,6 +357,7 @@ TkpFontPkgInit(mainPtr) type.clientData = NULL; type.nullSize = 2; Tcl_CreateEncoding(&type); + Tcl_CreateThreadExitHandler(FontPkgCleanup, NULL); } } @@ -1114,74 +1155,75 @@ Tk_DrawChars(display, drawable, gc, tkfont, source, numBytes, x, y) SubFont *thisSubFontPtr, *lastSubFontPtr; Tcl_DString runString; CONST char *p, *end, *next; - int xStart, needWidth; + int xStart, needWidth, window_width; Tcl_UniChar ch; FontFamily *familyPtr; + int rx, ry, width, height, border_width, depth; + int do_width; + Drawable root; fontPtr = (UnixFont *) tkfont; lastSubFontPtr = &fontPtr->subFontArray[0]; xStart = x; + /* + * Get the window width so we can abort drawing outside of the window + */ + if (XGetGeometry(display, drawable, &root, &rx, &ry, &width, &height, + &border_width, &depth) == False) { + window_width = INT_MAX; + } else { + window_width = width; + } + end = source + numBytes; - for (p = source; p < end; ) { - next = p + Tcl_UtfToUniChar(p, &ch); - thisSubFontPtr = FindSubFontForChar(fontPtr, ch); - if (thisSubFontPtr != lastSubFontPtr) { + needWidth = fontPtr->font.fa.underline + fontPtr->font.fa.overstrike; + for (p = source; p <= end; ) { + if (p < end) { + next = p + Tcl_UtfToUniChar(p, &ch); + thisSubFontPtr = FindSubFontForChar(fontPtr, ch); + } else { + next = p + 1; + thisSubFontPtr = lastSubFontPtr; + } + if ((thisSubFontPtr != lastSubFontPtr) + || (p == end) || (p-source > 200)) { if (p > source) { + do_width = (needWidth || (p != end)) ? 1 : 0; familyPtr = lastSubFontPtr->familyPtr; + Tcl_UtfToExternalDString(familyPtr->encoding, source, p - source, &runString); if (familyPtr->isTwoByteFont) { XDrawString16(display, drawable, gc, x, y, (XChar2b *) Tcl_DStringValue(&runString), Tcl_DStringLength(&runString) / 2); - - x += XTextWidth16(lastSubFontPtr->fontStructPtr, - (XChar2b *) Tcl_DStringValue(&runString), - Tcl_DStringLength(&runString) / 2); + if (do_width) { + x += XTextWidth16(lastSubFontPtr->fontStructPtr, + (XChar2b *) Tcl_DStringValue(&runString), + Tcl_DStringLength(&runString) / 2); + } } else { XDrawString(display, drawable, gc, x, y, Tcl_DStringValue(&runString), Tcl_DStringLength(&runString)); - x += XTextWidth(lastSubFontPtr->fontStructPtr, - Tcl_DStringValue(&runString), - Tcl_DStringLength(&runString)); + if (do_width) { + x += XTextWidth(lastSubFontPtr->fontStructPtr, + Tcl_DStringValue(&runString), + Tcl_DStringLength(&runString)); + } } Tcl_DStringFree(&runString); } lastSubFontPtr = thisSubFontPtr; source = p; XSetFont(display, gc, lastSubFontPtr->fontStructPtr->fid); - } - p = next; - } - - needWidth = fontPtr->font.fa.underline + fontPtr->font.fa.overstrike; - if (p > source) { - familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDString(familyPtr->encoding, source, p - source, - &runString); - if (familyPtr->isTwoByteFont) { - XDrawString16(display, drawable, gc, x, y, - (XChar2b *) Tcl_DStringValue(&runString), - Tcl_DStringLength(&runString) >> 1); - if (needWidth) { - x += XTextWidth16(lastSubFontPtr->fontStructPtr, - (XChar2b *) Tcl_DStringValue(&runString), - Tcl_DStringLength(&runString) >> 1); - } - } else { - XDrawString(display, drawable, gc, x, y, - Tcl_DStringValue(&runString), - Tcl_DStringLength(&runString)); - if (needWidth) { - x += XTextWidth(lastSubFontPtr->fontStructPtr, - Tcl_DStringValue(&runString), - Tcl_DStringLength(&runString)); + if (x > window_width) { + break; } } - Tcl_DStringFree(&runString); + p = next; } if (lastSubFontPtr != &fontPtr->subFontArray[0]) { @@ -1199,6 +1241,9 @@ Tk_DrawChars(display, drawable, gc, tkfont, source, numBytes, x, y) (unsigned) (x - xStart), (unsigned) fontPtr->barHeight); } } + + + /* *------------------------------------------------------------------------- diff --git a/unix/tkUnixKey.c b/unix/tkUnixKey.c index be2484e..8691e18 100644 --- a/unix/tkUnixKey.c +++ b/unix/tkUnixKey.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixKey.c,v 1.5 2000/04/10 22:43:13 ericm Exp $ + * RCS: @(#) $Id: tkUnixKey.c,v 1.5.8.1 2002/06/10 05:38:27 wolfsuit Exp $ */ #include "tkInt.h" @@ -18,11 +18,48 @@ * Prototypes for local procedures defined in this file: */ +#ifdef TK_USE_INPUT_METHODS +static int caretX = 0, caretY = 0; +#endif /* *---------------------------------------------------------------------- * + * Tk_SetCaretPos -- + * + * This enables correct placement of the XIM caret. This is called + * by widgets to indicate their cursor placement, and the caret + * location is used by TkpGetString to place the XIM caret. + * + * Results: + * None + * + * Side effects: + * None + * + *---------------------------------------------------------------------- + */ + +void +Tk_SetCaretPos(tkwin, x, y, height) + Tk_Window tkwin; + int x; + int y; + int height; +{ +#ifdef TK_USE_INPUT_METHODS + /* + * Use height for best placement of the XIM over-the-spot box. + */ + caretX = x; + caretY = y + height; +#endif +} + +/* + *---------------------------------------------------------------------- + * * TkpGetString -- * * Retrieve the UTF string associated with a keyboard event. @@ -56,11 +93,16 @@ TkpGetString(winPtr, eventPtr, dsPtr) Tcl_DStringInit(&buf); Tcl_DStringSetLength(&buf, TCL_DSTRING_STATIC_SIZE-1); - + #ifdef TK_USE_INPUT_METHODS if (winPtr->dispPtr->useInputMethods && (winPtr->inputContext != NULL) && (eventPtr->type == KeyPress)) { +#if TK_XIM_SPOT + XVaNestedList preedit_attr; + XPoint spot; +#endif + len = XmbLookupString(winPtr->inputContext, &eventPtr->xkey, Tcl_DStringValue(&buf), Tcl_DStringLength(&buf), (KeySym *) NULL, &status); @@ -76,6 +118,17 @@ TkpGetString(winPtr, eventPtr, dsPtr) if ((status != XLookupChars) && (status != XLookupBoth)) { len = 0; } + +#if TK_XIM_SPOT + /* + * Adjust the XIM caret position. + */ + spot.x = caretX; spot.y = caretY; + preedit_attr = XVaCreateNestedList(0, XNSpotLocation, &spot, NULL); + XSetICValues(winPtr->inputContext, + XNPreeditAttributes, preedit_attr, NULL); + XFree(preedit_attr); +#endif } else { len = XLookupString(&eventPtr->xkey, Tcl_DStringValue(&buf), Tcl_DStringLength(&buf), (KeySym *) NULL, diff --git a/unix/tkUnixMenu.c b/unix/tkUnixMenu.c index fb61b69..6c7131a 100644 --- a/unix/tkUnixMenu.c +++ b/unix/tkUnixMenu.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixMenu.c,v 1.5.2.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkUnixMenu.c,v 1.5.2.2 2002/06/10 05:38:27 wolfsuit Exp $ */ #include "tkPort.h" @@ -707,7 +707,7 @@ DrawMenuEntryLabel(menuPtr, mePtr, d, gc, tkfont, fmPtr, x, y, width, height) int activeBorderWidth; int leftEdge; int imageHeight, imageWidth; - int textHeight, textWidth; + int textHeight = 0, textWidth = 0; /* stop GCC warning */ int haveImage = 0, haveText = 0; int imageXOffset = 0, imageYOffset = 0; int textXOffset = 0, textYOffset = 0; @@ -1473,7 +1473,7 @@ GetMenuLabelGeometry(mePtr, tkfont, fmPtr, widthPtr, heightPtr) * portion */ { TkMenu *menuPtr = mePtr->menuPtr; - int haveImage = 0, haveText = 0; + int haveImage = 0; if (mePtr->image != NULL) { Tk_SizeOfImage(mePtr->image, widthPtr, heightPtr); diff --git a/unix/tkUnixSelect.c b/unix/tkUnixSelect.c index 364469d..08b3dc5 100644 --- a/unix/tkUnixSelect.c +++ b/unix/tkUnixSelect.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixSelect.c,v 1.7 2001/07/03 01:03:16 hobbs Exp $ + * RCS: @(#) $Id: tkUnixSelect.c,v 1.7.2.1 2002/06/10 05:38:27 wolfsuit Exp $ */ #include "tkInt.h" @@ -1197,6 +1197,7 @@ SelRcvIncrProc(clientData, eventPtr) */ retrPtr->result = TCL_OK; + Tcl_Release((ClientData) interp); goto done; } else { src = propInfo; diff --git a/unix/tkUnixSend.c b/unix/tkUnixSend.c index 362b676..eba386b 100644 --- a/unix/tkUnixSend.c +++ b/unix/tkUnixSend.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixSend.c,v 1.4.18.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkUnixSend.c,v 1.4.18.2 2002/06/10 05:38:27 wolfsuit Exp $ */ #include "tkPort.h" @@ -1256,6 +1256,39 @@ TkGetInterpNames(interp, tkwin) /* *-------------------------------------------------------------- * + * TkSendCleanup -- + * + * This procedure is called to free resources used by the + * communication channels for sending commands and + * receiving results. + * + * Results: + * None. + * + * Side effects: + * Frees various data structures and windows. + * + *-------------------------------------------------------------- + */ + +void +TkSendCleanup(dispPtr) + TkDisplay *dispPtr; +{ + if (dispPtr->commTkwin != NULL) { + Tk_DeleteEventHandler(dispPtr->commTkwin, PropertyChangeMask, + SendEventProc, (ClientData) dispPtr); +#ifdef PURIFY + /* Tk_DestroyWindow(dispPtr->commTkwin); */ + ckfree((char *) dispPtr->commTkwin); +#endif + dispPtr->commTkwin = NULL; + } +} + +/* + *-------------------------------------------------------------- + * * SendInit -- * * This procedure is called to initialize the diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c index dded8b2..407c7d2 100644 --- a/unix/tkUnixWm.c +++ b/unix/tkUnixWm.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixWm.c,v 1.9.2.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkUnixWm.c,v 1.9.2.2 2002/06/10 05:38:27 wolfsuit Exp $ */ #include "tkPort.h" @@ -62,19 +62,14 @@ typedef struct TkWmInfo { char *title; /* Title to display in window caption. If * NULL, use name of widget. Malloced. */ char *iconName; /* Name to display in icon. Malloced. */ - Window master; /* Master window for TRANSIENT_FOR property, - * or None. */ XWMHints hints; /* Various pieces of information for * window manager. */ char *leaderName; /* Path name of leader of window group * (corresponds to hints.window_group). * Malloc-ed. Note: this field doesn't * get updated if leader is destroyed. */ - char *masterWindowName; /* Path name of window specified as master - * in "wm transient" command, or NULL. - * Malloc-ed. Note: this field doesn't - * get updated if masterWindowName is - * destroyed. */ + TkWindow *masterPtr; /* Master window for TRANSIENT_FOR property, + * or NULL. */ Tk_Window icon; /* Window to use as icon for this window, * or NULL. */ Tk_Window iconFor; /* Window for which this window is icon, or @@ -350,6 +345,65 @@ static void WrapperEventProc _ANSI_ARGS_((ClientData clientData, /* *-------------------------------------------------------------- * + * TkWmCleanup -- + * + * This procedure is invoked to cleanup remaining wm resources + * associated with a display. + * + * Results: + * None. + * + * Side effects: + * All WmInfo structure resources are freed and invalidated. + * + *-------------------------------------------------------------- + */ + +void TkWmCleanup(dispPtr) + TkDisplay *dispPtr; +{ + WmInfo *wmPtr, *nextPtr; + for (wmPtr = dispPtr->firstWmPtr; wmPtr != NULL; wmPtr = nextPtr) { + /* + * We can't assume we have access to winPtr's anymore, so some + * cleanup requiring winPtr data is avoided. + */ + nextPtr = wmPtr->nextPtr; + if (wmPtr->title != NULL) { + ckfree(wmPtr->title); + } + if (wmPtr->iconName != NULL) { + ckfree(wmPtr->iconName); + } + if (wmPtr->leaderName != NULL) { + ckfree(wmPtr->leaderName); + } + if (wmPtr->menubar != NULL) { + Tk_DestroyWindow(wmPtr->menubar); + } + if (wmPtr->wrapperPtr != NULL) { + Tk_DestroyWindow((Tk_Window) wmPtr->wrapperPtr); + } + while (wmPtr->protPtr != NULL) { + ProtocolHandler *protPtr; + + protPtr = wmPtr->protPtr; + wmPtr->protPtr = protPtr->nextPtr; + Tcl_EventuallyFree((ClientData) protPtr, TCL_DYNAMIC); + } + if (wmPtr->cmdArgv != NULL) { + ckfree((char *) wmPtr->cmdArgv); + } + if (wmPtr->clientMachine != NULL) { + ckfree((char *) wmPtr->clientMachine); + } + ckfree((char *) wmPtr); + } +} + +/* + *-------------------------------------------------------------- + * * TkWmNewWindow -- * * This procedure is invoked whenever a new top-level @@ -373,11 +427,10 @@ TkWmNewWindow(winPtr) TkDisplay *dispPtr = winPtr->dispPtr; wmPtr = (WmInfo *) ckalloc(sizeof(WmInfo)); + memset(wmPtr, 0, sizeof(WmInfo)); wmPtr->winPtr = winPtr; wmPtr->reparent = None; - wmPtr->title = NULL; - wmPtr->iconName = NULL; - wmPtr->master = None; + wmPtr->masterPtr = NULL; wmPtr->hints.flags = InputHint | StateHint; wmPtr->hints.input = True; wmPtr->hints.initial_state = NormalState; @@ -386,15 +439,6 @@ TkWmNewWindow(winPtr) wmPtr->hints.icon_x = wmPtr->hints.icon_y = 0; wmPtr->hints.icon_mask = None; wmPtr->hints.window_group = None; - wmPtr->leaderName = NULL; - wmPtr->masterWindowName = NULL; - wmPtr->icon = NULL; - wmPtr->iconFor = NULL; - wmPtr->withdrawn = 0; - wmPtr->wrapperPtr = NULL; - wmPtr->menubar = NULL; - wmPtr->menuHeight = 0; - wmPtr->sizeHintsFlags = 0; wmPtr->minWidth = wmPtr->minHeight = 1; /* @@ -402,9 +446,6 @@ TkWmNewWindow(winPtr) * a guess about how space is needed for window manager decorations. */ - wmPtr->maxWidth = 0; - wmPtr->maxHeight = 0; - wmPtr->gridWin = NULL; wmPtr->widthInc = wmPtr->heightInc = 1; wmPtr->minAspect.x = wmPtr->minAspect.y = 1; wmPtr->maxAspect.x = wmPtr->maxAspect.y = 1; @@ -418,13 +459,9 @@ TkWmNewWindow(winPtr) + 2*winPtr->changes.border_width; wmPtr->parentHeight = winPtr->changes.height + 2*winPtr->changes.border_width; - wmPtr->xInParent = wmPtr->yInParent = 0; wmPtr->configWidth = -1; wmPtr->configHeight = -1; wmPtr->vRoot = None; - wmPtr->protPtr = NULL; - wmPtr->cmdArgv = NULL; - wmPtr->clientMachine = NULL; wmPtr->flags = WM_NEVER_MAPPED; wmPtr->nextPtr = (WmInfo *) dispPtr->firstWmPtr; dispPtr->firstWmPtr = wmPtr; @@ -511,9 +548,9 @@ TkWmMapWindow(winPtr) Tcl_DStringFree(&ds); } - if (wmPtr->master != None) { + if (wmPtr->masterPtr != NULL) { XSetTransientForHint(winPtr->display, wmPtr->wrapperPtr->window, - wmPtr->master); + wmPtr->masterPtr->wmInfoPtr->wrapperPtr->window); } wmPtr->flags |= WM_UPDATE_SIZE_HINTS; @@ -663,9 +700,6 @@ TkWmDeadWindow(winPtr) if (wmPtr->leaderName != NULL) { ckfree(wmPtr->leaderName); } - if (wmPtr->masterWindowName != NULL) { - ckfree(wmPtr->masterWindowName); - } if (wmPtr->icon != NULL) { wmPtr2 = ((TkWindow *) wmPtr->icon)->wmInfoPtr; wmPtr2->iconFor = NULL; @@ -1044,13 +1078,7 @@ Tk_WmCmd(clientData, interp, argc, argv) (char *) NULL); return TCL_ERROR; } - wmPtr->hints.initial_state = NormalState; - wmPtr->withdrawn = 0; - if (wmPtr->flags & WM_NEVER_MAPPED) { - return TCL_OK; - } - UpdateHints(winPtr); - Tk_MapWindow((Tk_Window) winPtr); + (void) TkpWmSetState(winPtr, NormalState); } else if ((c == 'f') && (strncmp(argv[1], "focusmodel", length) == 0) && (length >= 2)) { if ((argc != 3) && (argc != 4)) { @@ -1287,7 +1315,7 @@ Tk_WmCmd(clientData, interp, argc, argv) "\": override-redirect flag is set", (char *) NULL); return TCL_ERROR; } - if (wmPtr->master != None) { + if (wmPtr->masterPtr != NULL) { Tcl_AppendResult(interp, "can't iconify \"", winPtr->pathName, "\": it is a transient", (char *) NULL); return TCL_ERROR; @@ -1298,23 +1326,11 @@ Tk_WmCmd(clientData, interp, argc, argv) (char *) NULL); return TCL_ERROR; } - wmPtr->hints.initial_state = IconicState; - if (wmPtr->flags & WM_NEVER_MAPPED) { - return TCL_OK; - } - if (wmPtr->withdrawn) { - UpdateHints(winPtr); - Tk_MapWindow((Tk_Window) winPtr); - wmPtr->withdrawn = 0; - } else { - if (XIconifyWindow(winPtr->display, wmPtr->wrapperPtr->window, - winPtr->screenNum) == 0) { - Tcl_SetResult(interp, - "couldn't send iconify message to window manager", - TCL_STATIC); - return TCL_ERROR; - } - WaitForMapNotify(winPtr, 0); + if (TkpWmSetState(winPtr, IconicState) == 0) { + Tcl_SetResult(interp, + "couldn't send iconify message to window manager", + TCL_STATIC); + return TCL_ERROR; } } else if ((c == 'i') && (strncmp(argv[1], "iconmask", length) == 0) && (length >= 5)) { @@ -1759,7 +1775,7 @@ Tk_WmCmd(clientData, interp, argc, argv) if ((argc != 3) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], - " stackorder window ?isabove|isbelow? ?window?\"", + " stackorder window ?isabove|isbelow window?\"", (char *) NULL); return TCL_ERROR; } @@ -1864,13 +1880,7 @@ Tk_WmCmd(clientData, interp, argc, argv) length = strlen(argv[3]); if ((c == 'n') && (strncmp(argv[3], "normal", length) == 0)) { - wmPtr->hints.initial_state = NormalState; - wmPtr->withdrawn = 0; - if (wmPtr->flags & WM_NEVER_MAPPED) { - return TCL_OK; - } - UpdateHints(winPtr); - Tk_MapWindow((Tk_Window) winPtr); + (void) TkpWmSetState(winPtr, NormalState); } else if ((c == 'i') && (strncmp(argv[3], "iconic", length) == 0)) { if (Tk_Attributes((Tk_Window) winPtr)->override_redirect) { @@ -1880,44 +1890,26 @@ Tk_WmCmd(clientData, interp, argc, argv) (char *) NULL); return TCL_ERROR; } - if (wmPtr->master != None) { + if (wmPtr->masterPtr != NULL) { Tcl_AppendResult(interp, "can't iconify \"", winPtr->pathName, "\": it is a transient", (char *) NULL); return TCL_ERROR; } - wmPtr->hints.initial_state = IconicState; - if (wmPtr->flags & WM_NEVER_MAPPED) { - return TCL_OK; - } - if (wmPtr->withdrawn) { - UpdateHints(winPtr); - Tk_MapWindow((Tk_Window) winPtr); - wmPtr->withdrawn = 0; - } else { - if (XIconifyWindow(winPtr->display, - wmPtr->wrapperPtr->window, - winPtr->screenNum) == 0) { - Tcl_SetResult(interp, "couldn't send iconify message to window manager", TCL_STATIC); - return TCL_ERROR; - } - WaitForMapNotify(winPtr, 0); + if (TkpWmSetState(winPtr, IconicState) == 0) { + Tcl_SetResult(interp, + "couldn't send iconify message to window manager", + TCL_STATIC); + return TCL_ERROR; } } else if ((c == 'w') && (strncmp(argv[3], "withdrawn", length) == 0)) { - wmPtr->hints.initial_state = WithdrawnState; - wmPtr->withdrawn = 1; - if (wmPtr->flags & WM_NEVER_MAPPED) { - return TCL_OK; - } - if (XWithdrawWindow(winPtr->display, wmPtr->wrapperPtr->window, - winPtr->screenNum) == 0) { + if (TkpWmSetState(winPtr, WithdrawnState) == 0) { Tcl_SetResult(interp, "couldn't send withdraw message to window manager", TCL_STATIC); return TCL_ERROR; } - WaitForMapNotify(winPtr, 0); } else { Tcl_AppendResult(interp, "bad argument \"", argv[3], "\": must be normal, iconic or withdrawn", @@ -1971,7 +1963,7 @@ Tk_WmCmd(clientData, interp, argc, argv) } } else if ((c == 't') && (strncmp(argv[1], "transient", length) == 0) && (length >= 3)) { - Tk_Window master; + TkWindow *masterPtr = wmPtr->masterPtr; WmInfo *wmPtr2; if ((argc != 3) && (argc != 4)) { @@ -1980,44 +1972,62 @@ Tk_WmCmd(clientData, interp, argc, argv) return TCL_ERROR; } if (argc == 3) { - if (wmPtr->master != None) { - Tcl_SetResult(interp, wmPtr->masterWindowName, TCL_STATIC); + if (masterPtr != NULL) { + Tcl_SetResult(interp, masterPtr->pathName, TCL_STATIC); } return TCL_OK; } if (argv[3][0] == '\0') { - wmPtr->master = None; - if (wmPtr->masterWindowName != NULL) { - ckfree(wmPtr->masterWindowName); - } - wmPtr->masterWindowName = NULL; + wmPtr->masterPtr = NULL; } else { - master = Tk_NameToWindow(interp, argv[3], tkwin); - if (master == NULL) { + masterPtr = (TkWindow *) Tk_NameToWindow(interp, argv[3], tkwin); + if (masterPtr == NULL) { return TCL_ERROR; } - while (!Tk_IsTopLevel(master)) { + while (!Tk_IsTopLevel(masterPtr)) { /* * Ensure that the master window is actually a Tk toplevel. */ - master = Tk_Parent(master); + masterPtr = masterPtr->parentPtr; + } + Tk_MakeWindowExist((Tk_Window) masterPtr); + + if (wmPtr->iconFor != NULL) { + Tcl_AppendResult(interp, "can't make \"", argv[2], + "\" a transient: it is an icon for ", + Tk_PathName(wmPtr->iconFor), + (char *) NULL); + return TCL_ERROR; } - Tk_MakeWindowExist(master); - wmPtr2 = ((TkWindow *) master)->wmInfoPtr; + + wmPtr2 = masterPtr->wmInfoPtr; if (wmPtr2->wrapperPtr == NULL) { CreateWrapper(wmPtr2); } - wmPtr->master = Tk_WindowId(wmPtr2->wrapperPtr); - if (wmPtr->masterWindowName != NULL) { - ckfree((char *) wmPtr->masterWindowName); + + if (wmPtr2->iconFor != NULL) { + Tcl_AppendResult(interp, "can't make \"", argv[3], + "\" a master: it is an icon for ", + Tk_PathName(wmPtr2->iconFor), + (char *) NULL); + return TCL_ERROR; + } + + if (masterPtr == winPtr) { + Tcl_AppendResult(interp, "can't make \"", Tk_PathName(winPtr), + "\" its own master", + (char *) NULL); + return TCL_ERROR; + } else if (masterPtr != wmPtr->masterPtr) { + wmPtr->masterPtr = masterPtr; } - wmPtr->masterWindowName = ckalloc((unsigned) (strlen(argv[3])+1)); - strcpy(wmPtr->masterWindowName, argv[3]); } if (!(wmPtr->flags & WM_NEVER_MAPPED)) { + Window xwin = (wmPtr->masterPtr == NULL) ? None : + wmPtr->masterPtr->wmInfoPtr->wrapperPtr->window; XSetTransientForHint(winPtr->display, wmPtr->wrapperPtr->window, - wmPtr->master); + xwin); } } else if ((c == 'w') && (strncmp(argv[1], "withdraw", length) == 0) && (length >= 2)) { @@ -2032,19 +2042,12 @@ Tk_WmCmd(clientData, interp, argc, argv) (char *) NULL); return TCL_ERROR; } - wmPtr->hints.initial_state = WithdrawnState; - wmPtr->withdrawn = 1; - if (wmPtr->flags & WM_NEVER_MAPPED) { - return TCL_OK; - } - if (XWithdrawWindow(winPtr->display, wmPtr->wrapperPtr->window, - winPtr->screenNum) == 0) { + if (TkpWmSetState(winPtr, WithdrawnState) == 0) { Tcl_SetResult(interp, "couldn't send withdraw message to window manager", TCL_STATIC); return TCL_ERROR; } - WaitForMapNotify(winPtr, 0); } else { Tcl_AppendResult(interp, "unknown or ambiguous option \"", argv[1], "\": must be aspect, client, command, deiconify, ", @@ -2343,11 +2346,12 @@ ConfigureEvent(wmPtr, configEventPtr) } if (dispPtr->wmTracing) { - printf("ConfigureEvent: %s x = %d y = %d, width = %d, height = %d", + printf("ConfigureEvent: %s x = %d y = %d, width = %d, height = %d\n", winPtr->pathName, configEventPtr->x, configEventPtr->y, configEventPtr->width, configEventPtr->height); - printf(" send_event = %d, serial = %ld\n", configEventPtr->send_event, - configEventPtr->serial); + printf(" send_event = %d, serial = %ld (win %p, wrapper %p)\n", + configEventPtr->send_event, configEventPtr->serial, + winPtr, wrapperPtr); } wrapperPtr->changes.width = configEventPtr->width; wrapperPtr->changes.height = configEventPtr->height; @@ -2371,6 +2375,12 @@ ConfigureEvent(wmPtr, configEventPtr) * there is a parent shrink-wrapped around the window. */ + if (dispPtr->wmTracing) { + printf(" %s parent == %p, above %p\n", + winPtr->pathName, (void *) wmPtr->reparent, + (void *) configEventPtr->above); + } + if ((wmPtr->reparent == None) || !ComputeReparentGeometry(wmPtr)) { wmPtr->parentWidth = configEventPtr->width + 2*configEventPtr->border_width; @@ -2484,8 +2494,8 @@ ReparentEvent(wmPtr, reparentEventPtr) Tk_DeleteErrorHandler(handler); if (dispPtr->wmTracing) { - printf("ReparentEvent: %s reparented to 0x%x, vRoot = 0x%x\n", - wmPtr->winPtr->pathName, + printf("ReparentEvent: %s (%p) reparented to 0x%x, vRoot = 0x%x\n", + wmPtr->winPtr->pathName, wmPtr->winPtr, (unsigned int) reparentEventPtr->parent, (unsigned int) vRoot); } @@ -2527,8 +2537,8 @@ ReparentEvent(wmPtr, reparentEventPtr) (Tk_ErrorProc *) NULL, (ClientData) NULL); wmPtr->reparent = reparentEventPtr->parent; while (1) { - if (XQueryTree(wrapperPtr->display, wmPtr->reparent, &dummy2, &ancestor, - &children, &dummy) == 0) { + if (XQueryTree(wrapperPtr->display, wmPtr->reparent, &dummy2, + &ancestor, &children, &dummy) == 0) { Tk_DeleteErrorHandler(handler); goto noReparent; } @@ -2635,8 +2645,8 @@ ComputeReparentGeometry(wmPtr) */ if (!(wmPtr->flags & WM_MOVE_PENDING) - && ((wmPtr->wrapperPtr->changes.x != (x + wmPtr->xInParent)) - || (wmPtr->wrapperPtr->changes.y != (y + wmPtr->yInParent)))) { + && ((wrapperPtr->changes.x != (x + wmPtr->xInParent)) + || (wrapperPtr->changes.y != (y + wmPtr->yInParent)))) { wmPtr->x = x; if (wmPtr->flags & WM_NEGATIVE_X) { wmPtr->x = wmPtr->vRootWidth - (wmPtr->x + wmPtr->parentWidth); @@ -2647,12 +2657,13 @@ ComputeReparentGeometry(wmPtr) } } - wmPtr->wrapperPtr->changes.x = x + wmPtr->xInParent; - wmPtr->wrapperPtr->changes.y = y + wmPtr->yInParent; + wrapperPtr->changes.x = x + wmPtr->xInParent; + wrapperPtr->changes.y = y + wmPtr->yInParent; if (dispPtr->wmTracing) { - printf("wrapperPtr coords %d,%d, wmPtr coords %d,%d, offsets %d %d\n", - wrapperPtr->changes.x, wrapperPtr->changes.y, - wmPtr->x, wmPtr->y, wmPtr->xInParent, wmPtr->yInParent); + printf("wrapperPtr %p coords %d,%d\n", + wrapperPtr, wrapperPtr->changes.x, wrapperPtr->changes.y); + printf(" wmPtr %p coords %d,%d, offsets %d %d\n", + wmPtr, wmPtr->x, wmPtr->y, wmPtr->xInParent, wmPtr->yInParent); } return 1; } @@ -2988,7 +2999,8 @@ UpdateGeometryInfo(clientData) wmPtr->configWidth = width; wmPtr->configHeight = height; if (winPtr->dispPtr->wmTracing) { - printf("UpdateGeometryInfo resizing to %d x %d\n", width, height); + printf("UpdateGeometryInfo resizing %p to %d x %d\n", + (void *)wmPtr->wrapperPtr->window, width, height); } XResizeWindow(winPtr->display, wmPtr->wrapperPtr->window, (unsigned) width, (unsigned) height); @@ -3384,7 +3396,8 @@ WaitForMapNotify(winPtr, mapped) } wmPtr->flags &= ~WM_MOVE_PENDING; if (winPtr->dispPtr->wmTracing) { - printf("WaitForMapNotify finished with %s\n", winPtr->pathName); + printf("WaitForMapNotify finished with %s (winPtr %p, wmPtr %p)\n", + winPtr->pathName, winPtr, wmPtr); } } @@ -4198,7 +4211,8 @@ TkWmStackorderToplevelWrapperMap(winPtr, table) Window wrapper; int newEntry; - if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr)) { + if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr) && + !Tk_IsEmbedded(winPtr)) { wrapper = (winPtr->wmInfoPtr->reparent != None) ? winPtr->wmInfoPtr->reparent : winPtr->wmInfoPtr->wrapperPtr->window; @@ -4289,6 +4303,9 @@ TkWmStackorderToplevel(parentPtr) if ((window_ptr - windows) != table.numEntries) panic("num matched toplevel windows does not equal num children"); *window_ptr = NULL; + if (numChildren) { + XFree((char *) children); + } } done: @@ -4336,6 +4353,7 @@ TkWmRestackToplevel(winPtr, aboveBelow, otherPtr) Tk_ErrorHandler handler; TkWindow *wrapperPtr; + memset(&changes, 0, sizeof(XWindowChanges)); changes.stack_mode = aboveBelow; changes.sibling = None; mask = CWStackMode; @@ -4482,22 +4500,9 @@ TkWmRestackToplevel(winPtr, aboveBelow, otherPtr) * the event isn't one that Tk owns. */ - if (window == wrapperPtr->window) { - WaitForConfigureNotify(winPtr, serial); - } else { - XEvent event; - int diff; + WaitForConfigureNotify(winPtr, serial); - while (1) { - if (WaitForEvent(winPtr->display, winPtr->wmInfoPtr, - ConfigureNotify, &event) != TCL_OK) { - break; - } - diff = event.xconfigure.serial - serial; - if (diff >= 0) { - break; - } - } + if (window != wrapperPtr->window) { /* * Ignore errors that occur when we are de-selecting events on * window, since it's possible that the window doesn't exist @@ -4953,9 +4958,6 @@ CreateWrapper(wmPtr) wrapperPtr->mainPtr->refCount++; wrapperPtr->dirtyAtts = 0; wrapperPtr->dirtyChanges = 0; -#ifdef TK_USE_INPUT_METHODS - wrapperPtr->inputContext = NULL; -#endif /* TK_USE_INPUT_METHODS */ wrapperPtr->wmInfoPtr = wmPtr; /* @@ -5267,3 +5269,68 @@ UpdateCommand(winPtr) ckfree((char *) cmdArgv); ckfree((char *) offsets); } + +/* + *---------------------------------------------------------------------- + * + * TkpWmSetState -- + * + * Sets the window manager state for the wrapper window of a + * given toplevel window. + * + * Results: + * 0 on error, 1 otherwise + * + * Side effects: + * May minimize, restore, or withdraw a window. + * + *---------------------------------------------------------------------- + */ + +int +TkpWmSetState(winPtr, state) + TkWindow *winPtr; /* Toplevel window to operate on. */ + int state; /* One of IconicState, NormalState, + * or WithdrawnState. */ +{ + WmInfo *wmPtr = winPtr->wmInfoPtr; + + if (state == WithdrawnState) { + wmPtr->hints.initial_state = WithdrawnState; + wmPtr->withdrawn = 1; + if (wmPtr->flags & WM_NEVER_MAPPED) { + return 1; + } + if (XWithdrawWindow(winPtr->display, wmPtr->wrapperPtr->window, + winPtr->screenNum) == 0) { + return 0; + } + WaitForMapNotify(winPtr, 0); + } else if (state == NormalState) { + wmPtr->hints.initial_state = NormalState; + wmPtr->withdrawn = 0; + if (wmPtr->flags & WM_NEVER_MAPPED) { + return 1; + } + UpdateHints(winPtr); + Tk_MapWindow((Tk_Window) winPtr); + } else if (state == IconicState) { + wmPtr->hints.initial_state = IconicState; + if (wmPtr->flags & WM_NEVER_MAPPED) { + return 1; + } + if (wmPtr->withdrawn) { + UpdateHints(winPtr); + Tk_MapWindow((Tk_Window) winPtr); + wmPtr->withdrawn = 0; + } else { + if (XIconifyWindow(winPtr->display, wmPtr->wrapperPtr->window, + winPtr->screenNum) == 0) { + return 0; + } + WaitForMapNotify(winPtr, 0); + } + } + + return 1; +} diff --git a/unix/tkUnixXId.c b/unix/tkUnixXId.c index c2be145..8eaa21d 100644 --- a/unix/tkUnixXId.c +++ b/unix/tkUnixXId.c @@ -17,7 +17,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixXId.c,v 1.6 2001/09/25 16:25:20 dgp Exp $ + * RCS: @(#) $Id: tkUnixXId.c,v 1.6.2.1 2002/06/10 05:38:27 wolfsuit Exp $ */ /* @@ -84,7 +84,50 @@ TkInitXId(dispPtr) dispPtr->display->resource_alloc; dispPtr->display->resource_alloc = AllocXId; dispPtr->windowStackPtr = NULL; - dispPtr->idCleanupScheduled = 0; + dispPtr->idCleanupScheduled = (Tcl_TimerToken) 0; +} + +/* + *---------------------------------------------------------------------- + * + * TkFreeXId -- + * + * This procedure is called to free resources for the id allocator + * for a given display. + * + * Results: + * None. + * + * Side effects: + * Frees the id and window stack pools. + * + *---------------------------------------------------------------------- + */ + +void +TkFreeXId(dispPtr) + TkDisplay *dispPtr; /* Tk's information about the + * display. */ +{ + TkIdStack *stackPtr, *freePtr; + + if (dispPtr->idCleanupScheduled) { + Tcl_DeleteTimerHandler(dispPtr->idCleanupScheduled); + } + + for (stackPtr = dispPtr->idStackPtr; stackPtr != NULL; ) { + freePtr = stackPtr; + stackPtr = stackPtr->nextPtr; + ckfree((char *) freePtr); + } + dispPtr->idStackPtr = NULL; + + for (stackPtr = dispPtr->windowStackPtr; stackPtr != NULL; ) { + freePtr = stackPtr; + stackPtr = stackPtr->nextPtr; + ckfree((char *) freePtr); + } + dispPtr->windowStackPtr = NULL; } /* @@ -293,8 +336,8 @@ TkFreeWindowId(dispPtr, w) */ if (!dispPtr->idCleanupScheduled) { - dispPtr->idCleanupScheduled = 1; - Tcl_CreateTimerHandler(100, WindowIdCleanup, (ClientData) dispPtr); + dispPtr->idCleanupScheduled = + Tcl_CreateTimerHandler(100, WindowIdCleanup, (ClientData) dispPtr); } } @@ -328,7 +371,7 @@ WindowIdCleanup(clientData) ClientData oldData; static Tcl_Time timeout = {0, 0}; - dispPtr->idCleanupScheduled = 0; + dispPtr->idCleanupScheduled = (Tcl_TimerToken) 0; /* * See if it's safe to recycle the window ids. It's safe if: @@ -375,8 +418,8 @@ WindowIdCleanup(clientData) */ tryAgain: - dispPtr->idCleanupScheduled = 1; - Tcl_CreateTimerHandler(500, WindowIdCleanup, (ClientData) dispPtr); + dispPtr->idCleanupScheduled = + Tcl_CreateTimerHandler(500, WindowIdCleanup, (ClientData) dispPtr); } /* diff --git a/win/Makefile.in b/win/Makefile.in index b8a6ac3..1465c97 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -4,7 +4,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.44.2.1 2002/02/05 02:25:18 wolfsuit Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.44.2.2 2002/06/10 05:38:27 wolfsuit Exp $ TCLVERSION = @TCL_VERSION@ VERSION = @TK_VERSION@ @@ -319,6 +319,7 @@ TK_OBJS = \ tkMenubutton.$(OBJEXT) \ tkMenuDraw.$(OBJEXT) \ tkMessage.$(OBJEXT) \ + tkPanedWindow.$(OBJEXT) \ tkObj.$(OBJEXT) \ tkOldConfig.$(OBJEXT) \ tkOption.$(OBJEXT) \ @@ -391,22 +392,22 @@ test: binaries $(TKTEST) ./$(TKTEST) "$(ROOT_DIR_NATIVE)/tests/all.tcl" $(TESTFLAGS) \ | ./$(CAT32) -runtest: $(TKTEST) +runtest: binaries $(TKTEST) @TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \ TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \ PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \ - ./$(TKTEST) + ./$(TKTEST) $(TESTFLAGS) $(SCRIPT) # This target can be used to run wish from the build directory # via `make shell` or `make shell SCRIPT=foo.tcl` -shell: $(WISH) +shell: binaries @TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \ TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \ PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \ ./$(WISH) $(SCRIPT) # This target can be used to run wish inside either gdb or insight -gdb: $(WISH) +gdb: binaries @echo "set env TCL_LIBRARY=$(TCL_SRC_DIR_NATIVE)/library" > gdb.run @echo "set env TK_LIBRARY=$(ROOT_DIR_NATIVE)/library" >> gdb.run PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \ @@ -2,7 +2,7 @@ Tk 8.4 for Windows Originally by Scott Stanton while at Sun Microsystems Labs -RCS: @(#) $Id: README,v 1.15 2001/07/05 01:45:04 uid38172 Exp $ +RCS: @(#) $Id: README,v 1.15.2.1 2002/06/10 05:38:27 wolfsuit Exp $ This is the directory where you configure and compile the Windows version of Tk. This directory also contains source files for Tk @@ -20,4 +20,4 @@ locate the necessary Tcl files. Otherwise you may need to edit makefile.vc and adjust the path to Tcl accordingly. Information about compiling for windows is maintained at: - http://www.purl.org/tcl/home/doc/howto/compile.html + http://www.tcl.tk/doc/howto/compile.html diff --git a/win/buildall.vc.bat b/win/buildall.vc.bat index afd15c7..45b95e7 100755 --- a/win/buildall.vc.bat +++ b/win/buildall.vc.bat @@ -1,13 +1,36 @@ @echo off -if "%MSVCDir%" == "" call c:\dev\devstudio60\vc98\bin\vcvars32.bat -set INSTALLDIR=C:\tclTestArea +:: This is an example batchfile for building everything. Please +:: edit this (or make your own) for your needs and wants using +:: the instructions for calling makefile.vc found in makefile.vc +:: +:: RCS: @(#) $Id: buildall.vc.bat,v 1.2.2.2 2002/06/10 05:38:27 wolfsuit Exp $ + +echo Sit back and have a cup of coffee while this grinds through ;) +echo You asked for *everything*, remember? +echo. + +if "%MSVCDir%" == "" call C:\dev\devstudio60\vc98\bin\vcvars32.bat +set INSTALLDIR=C:\progra~1\tcl set TCLDIR=..\..\tcl_head -nmake -nologo -f makefile.vc release +nmake -nologo -f makefile.vc release winhelp OPTS=none +if errorlevel 1 goto error nmake -nologo -f makefile.vc release OPTS=static,linkexten -nmake -nologo -f makefile.vc core OPTS=static,msvcrt -nmake -nologo -f makefile.vc release OPTS=static,threads,linkexten -nmake -nologo -f makefile.vc core OPTS=static,msvcrt,threads +if errorlevel 1 goto error +nmake -nologo -f makefile.vc core OPTS=static,msvcrt +if errorlevel 1 goto error +nmake -nologo -f makefile.vc core OPTS=static,threads +if errorlevel 1 goto error +nmake -nologo -f makefile.vc core OPTS=static,msvcrt,threads +if errorlevel 1 goto error nmake -nologo -f makefile.vc release OPTS=threads +if errorlevel 1 goto error +goto end + +:error +echo *** BOOM! *** + +:end +echo done! pause diff --git a/win/configure b/win/configure index 0c774d9..caee41c 100755 --- a/win/configure +++ b/win/configure @@ -535,7 +535,7 @@ fi TK_VERSION=8.4 TK_MAJOR_VERSION=8 TK_MINOR_VERSION=4 -TK_PATCH_LEVEL="a4" +TK_PATCH_LEVEL="a5" VER=$TK_MAJOR_VERSION$TK_MINOR_VERSION #------------------------------------------------------------------------ @@ -1339,7 +1339,7 @@ echo "configure:1181: checking compiler flags" >&5 EXTRA_CFLAGS="-YX" CFLAGS_WARNING="-W3" - LDFLAGS_DEBUG="-debug:full -debugtype:cv" + LDFLAGS_DEBUG="-debug:full -debugtype:both" LDFLAGS_OPTIMIZE="-release" # Specify the CC output file names based on the target name diff --git a/win/configure.in b/win/configure.in index 2141edb..8e064a2 100644 --- a/win/configure.in +++ b/win/configure.in @@ -3,14 +3,14 @@ # generate the file "configure", which is run during Tk installation # to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.36.2.1 2002/02/05 02:25:18 wolfsuit Exp $ +# RCS: @(#) $Id: configure.in,v 1.36.2.2 2002/06/10 05:38:27 wolfsuit Exp $ AC_INIT(../generic/tk.h) TK_VERSION=8.4 TK_MAJOR_VERSION=8 TK_MINOR_VERSION=4 -TK_PATCH_LEVEL="a4" +TK_PATCH_LEVEL="a5" VER=$TK_MAJOR_VERSION$TK_MINOR_VERSION #------------------------------------------------------------------------ diff --git a/win/makefile.vc b/win/makefile.vc index efde149..6e74559 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -1,494 +1,740 @@ -# Visual C++ makefile +#------------------------------------------------------------------------------ +# makefile.vc -- +# +# Microsoft Visual C++ makefile for use with nmake.exe v1.62+ (VC++ 5.0+) # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# Copyright (c) 1995-1997 Sun Microsystems, Inc. +# Copyright (c) 1995-1996 Sun Microsystems, Inc. # Copyright (c) 1998-2000 Ajuba Solutions. # Copyright (c) 2001 ActiveState Corporation. +# Copyright (c) 2001-2002 David Gravereaux. # -# RCS: @(#) $Id: makefile.vc,v 1.42 2001/10/12 13:30:32 tmh Exp $ - -# Does not depend on the presence of any environment variables in -# order to compile tcl; all needed information is derived from -# location of the compiler directories. +#------------------------------------------------------------------------------ +# RCS: @(#) $Id: makefile.vc,v 1.42.2.1 2002/06/10 05:38:27 wolfsuit Exp $ +#------------------------------------------------------------------------------ + +!if "$(MSVCDIR)" == "" +MSG = ^ +You'll need to run vcvars32.bat from Developer Studio, first, to setup^ +the environment. Jump to this line to read the new instructions. +!error $(MSG) +!endif +#------------------------------------------------------------------------------ +# HOW TO USE this makefile: # -# Project directories +# 1) It is now necessary to have MSVCDir set in the environment. This is used +# as a check to see if vcvars32.bat had been run prior to running nmake or +# during the install of Microsoft Developer Studio, MSVCDir had been set +# globally and the PATH adjusted. Either way is valid. # -# ROOT = top of source tree +# You'll need to run vcvars32.bat contained in the MsDev's vc(98)/bin +# directory to setup the proper environment, if needed, for your current +# setup. This is a needed bootstrap requirement and allows the swapping of +# different environments to be easier. # -# TMPDIR = location where .obj files should be stored during build +# 2) To use the Platform SDK (not expressly needed), run setenv.bat after +# vcvars32.bat according to the instructions for it. This can also turn on +# the 64-bit compiler, if your SDK has it. # -# TOOLS32 = location of VC++ 32-bit development tools. Note that the -# VC++ 2.0 header files are broken, so you need to use the -# ones that come with the developer network CD's, or later -# versions of VC++. +# 3) Targets are: +# release -- builds the core, the shell. (default) +# core -- Only builds the core. +# all -- builds everything. +# test -- builds and runs the test suite. +# tktest -- just builds the binaries for the test suite. +# install -- installs the built binaries and libraries to $(INSTALLDIR) +# as the root of the install tree. +# console-wish -- builds a console version of wish. +# clean -- removes the contents of $(TMP_DIR) +# hose -- removes the contents of $(TMP_DIR) and $(OUT_DIR) +# genstubs -- rebuilds the Stubs table and support files (dev only). +# depend -- Generates an accurate set of source dependancies for this +# makefile. Helpful to avoid problems when the sources are +# refreshed and you rebuild, but can "overbuild" when common +# headers like tkInt.h just get small changes. +# winhelp -- builds the windows .hlp file for Tcl from the troff man +# files. # -# TCLDIR = location of top of Tcl source heirarchy +# 4) Macros usable on the commandline: +# TCLDIR=<path> +# Sets the location for where to find the Tcl headers and +# libraries. The install point is assumed when not specified. +# Tk does need the source directory, though. Tk comes very close +# to not needing the sources, but does, in fact, require them. # +# INSTALLDIR=<path> +# Sets where to install Tcl from the built binaries. +# C:\Progra~1\Tcl is assumed when not specified. +# +# OPTS=static,msvcrt,linkexten,threads,symbols,profile,none +# Sets special options for the core. The default is for none. +# Any combination of the above may be used (comma separated). +# 'none' will over-ride everything to nothing. +# +# static = Builds a static library of the core instead of a +# dll. The shell will be static (and large), as well. +# msvcrt = Effects the static option only to switch it from +# using libcmt(d) as the C runtime [by default] to +# msvcrt(d). This is useful for static embedding +# support. +# linkexten = Affects the static option only to switch wishXX.exe +# to have the dde and reg extension linked inside it. +# threads = Turns on full multithreading support. +# symbols = Adds symbols for step debugging. +# profile = Adds profiling hooks. Map file is assumed. +# +# STATS=memdbg,compdbg,none +# Sets optional memory and bytecode compiler debugging code added +# to the core. The default is for none. Any combination of the +# above may be used (comma separated). 'none' will over-ride +# everything to nothing. +# +# memdbg = Enables the debugging memory allocator. +# compdbg = Enables byte compilation logging. +# +# MACHINE=(IX86|IA64|ALPHA) +# Set the machine type used for the compiler, linker, and +# resource compiler. This hook is needed to tell the tools +# when alternate platforms are requested. IX86 is the default +# when not specified. +# +# TMP_DIR=<path> +# OUT_DIR=<path> +# Hooks to allow the intermediate and output directories to be +# changed. $(OUT_DIR) is assumed to be +# $(BINROOT)\(Release|Debug) based on if symbols are requested. +# $(TMP_DIR) will de $(OUT_DIR)\<buildtype> by default. +# +# TESTPAT=<file> +# Reads the tests requested to be run from this file. +# +# 5) Examples: +# +# Basic syntax of calling nmake looks like this: +# nmake [-nologo] -f makefile.vc [target|macrodef [target|macrodef] [...]] +# +# Standard (no frills) +# c:\tk_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat +# Setting environment for using Microsoft Visual C++ tools. +# c:\tk_src\win\>nmake -f makefile.vc release +# c:\tk_src\win\>nmake -f makefile.vc install INSTALLDIR=c:\progra~1\tcl +# +# Building for Win64 +# c:\tk_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat +# Setting environment for using Microsoft Visual C++ tools. +# c:\tk_src\win\>c:\progra~1\platfo~1\setenv.bat /pre64 /RETAIL +# Targeting Windows pre64 RETAIL +# c:\tk_src\win\>nmake -f makefile.vc MACHINE=IA64 +# +#------------------------------------------------------------------------------ +#============================================================================== +############################################################################### -ROOT = .. -TCLDIR = ..\..\tcl8.4 -INSTALLDIR = C:\Progra~1\tcl - -# Set this to the appropriate value of /MACHINE: for your platform -# Choices: IX86, IA64, ALPHA -MACHINE = IX86 - -!IF "$(MACHINE)" == "IA64" - -# IA64 support is based on the standard setup with v2 of the -# Microsoft SDK for XP, RC1 - -TOOLS32 = C:\Progra~1\Microsoft SDK -TOOLS32_rc = C:\Progra~1\Microsoft SDK - -cc32 = "$(TOOLS32)\bin\Win64\cl.exe" -link32 = "$(TOOLS32)\bin\Win64\link.exe" -libpath32 = /LIBPATH:"$(TOOLS32)\lib\IA64" -lib32 = "$(TOOLS32)\bin\Win64\lib.exe" -!ELSE +# //==================================================================\\ +# >>[ -> Do not modify below this line. <- ]<< +# >>[ Please, use the commandline macros to modify how Tcl is built. ]<< +# >>[ If you need more features, send us a patch for more macros. ]<< +# \\==================================================================// -# Visual Studio 5 default -TOOLS32 = C:\Progra~1\devstudio\vc -TOOLS32_rc = C:\Progra~1\devstudio\sharedide -# Visual Studio 6 default -#TOOLS32 = C:\Progra~1\Microsoft Visual Studio\VC98 -#TOOLS32_rc = C:\Progra~1\Microsoft Visual Studio\common\MSDev98 +############################################################################### +#============================================================================== +#------------------------------------------------------------------------------ -cc32 = "$(TOOLS32)\bin\cl.exe" -link32 = "$(TOOLS32)\bin\link.exe" -libpath32 = /LIBPATH:"$(TOOLS32)\lib" -lib32 = "$(TOOLS32)\bin\lib.exe" +!if !exist("makefile.vc") +MSG = ^ +You must run this makefile only from the directory it is in.^ +Please `cd` to its location first. +!error $(MSG) +!endif -!ENDIF +PROJECT = tk +!include "rules.vc" -rc32 = "$(TOOLS32_rc)\bin\rc.exe" -include32 = -I"$(TOOLS32)\include" +_INSTALLDIR = $(INSTALLDIR:/=\) -# Uncomment the following line to compile with thread support -#THREADDEFINES = -DTCL_THREADS=1 +!if !defined(TCLDIR) +!if exist($(_INSTALLDIR)\include\tcl.h) +TCLINSTALL = 1 +_TCLDIR = $(_INSTALLDIR) +!else +MSG=^ +Don't know where tcl.h is. Set the _TCLDIR macro. +!error $(MSG) +!endif +!else +_TCLDIR = $(TCLDIR:/=\) +!if exist($(_TCLDIR)\include\tcl.h) +TCLINSTALL = 1 +!elseif exist($(_TCLDIR)\generic\tcl.h) +TCLINSTALL = 0 +!else +MSG =^ +Don't know where tcl.h is. the TCLDIR macro doesn't appear correct. +!error $(MSG) +!endif +!endif -# Set NODEBUG to 0 to compile with symbols -NODEBUG = 1 +!if $(TCLINSTALL) +!message *** Warning: Tk requires the source distribution of Tcl to build from, +!message *** at this time, sorry. Please set the TCLDIR macro to point to the +!message *** Tcl sources. +!endif -# uncomment the following two lines to compile with TCL_MEM_DEBUG -#DEBUGDEFINES =-DTCL_MEM_DEBUG -#DEBUGDEFINES = -DTCL_MEM_DEBUG -DUSE_TCLALLOC=0 -DPURIFY +STUBPREFIX = $(PROJECT)stub +DOTVERSION = 8.4 +VERSION = $(DOTVERSION:.=) +WISHNAMEPREFIX = wish -###################################################################### -# Do not modify below this line -###################################################################### +BINROOT = . +ROOT = .. -TCLNAMEPREFIX = tcl -TKNAMEPREFIX = tk -WISHNAMEPREFIX = wish -VERSION = 84 -DOTVERSION = 8.4 +TCLIMPLIBNAME = tcl$(VERSION)$(SUFX).lib +TCLLIBNAME = tcl$(VERSION)$(SUFX).$(EXT) +TCLSTUBLIBNAME = tclstub$(VERSION).lib + +TCLREGLIBNAME = tclreg10$(SUFX:t=).lib +TCLDDELIBNAME = tcldde12$(SUFX:t=).lib + +TKIMPLIB = $(OUT_DIR)\$(PROJECT)$(VERSION)$(SUFX).lib +TKLIBNAME = $(PROJECT)$(VERSION)$(SUFX).$(EXT) +TKLIB = $(OUT_DIR)\$(TKLIBNAME) + +TKSTUBLIBNAME = $(STUBPREFIX)$(VERSION).lib +TKSTUBLIB = $(OUT_DIR)\$(TKSTUBLIBNAME) + +!if $(TCLINSTALL) +TCLSH = $(_INSTALLDIR)\bin\tclsh$(VERSION)$(SUFX).exe +TCLSTUBLIB = $(_INSTALLDIR)\lib\$(TCLSTUBLIBNAME) +TCLIMPLIB = $(_INSTALLDIR)\lib\$(TCLIMPLIBNAME) +TCL_LIBRARY = $(_INSTALLDIR)\lib +TCLREGLIB = $(_INSTALLDIR)\lib\$(TCLREGLIBNAME) +TCLDDELIB = $(_INSTALLDIR)\lib\$(TCLDDELIBNAME) +TCLTMP_DIR = \must\have\tcl\sources\to\build\this\target +COFFBASE = \must\have\tcl\sources\to\build\this\target +TOOLSDIR = \must\have\tcl\sources\to\build\this\target +!else +TCLSH = $(_TCLDIR)\win\$(BUILDDIRTOP)\tclsh$(VERSION)$(SUFX).exe +TCLSTUBLIB = $(_TCLDIR)\win\$(BUILDDIRTOP)\$(TCLSTUBLIBNAME) +TCLIMPLIB = $(_TCLDIR)\win\$(BUILDDIRTOP)\$(TCLIMPLIBNAME) +TCL_LIBRARY = $(_TCLDIR)\library +TCLREGLIB = $(_TCLDIR)\win\$(BUILDDIRTOP)\$(TCLREGLIBNAME) +TCLDDELIB = $(_TCLDIR)\win\$(BUILDDIRTOP)\$(TCLDDELIBNAME) +TCLTMP_DIR = $(_TCLDIR)\win\$(TMP_DIR:tk=tcl) +COFFBASE = $(_TCLDIR)\win\coffbase.txt +TOOLSDIR = $(_TCLDIR)\tools +!endif -TCLSTUBPREFIX = $(TCLNAMEPREFIX)stub -TKSTUBPREFIX = $(TKNAMEPREFIX)stub +WISH = $(OUT_DIR)\$(WISHNAMEPREFIX)$(VERSION)$(SUFX).exe +WISHC = $(OUT_DIR)\$(WISHNAMEPREFIX)c$(VERSION)$(SUFX).exe +TKTEST = $(OUT_DIR)\$(PROJECT)test.exe +CAT32 = $(OUT_DIR)\cat32.exe +RMDIR = .\rmd.bat +RM = del -BINROOT = . -!IF "$(NODEBUG)" == "1" -TMPDIRNAME = Release -DBGX = -!ELSE -TMPDIRNAME = Debug -DBGX = d -!ENDIF -TMPDIR = $(BINROOT)\$(TMPDIRNAME) -OUTDIRNAME = $(TMPDIRNAME) -OUTDIR = $(TMPDIR) - -TCLLIB = $(TCLNAMEPREFIX)$(VERSION)$(DBGX).lib -TCLPLUGINLIB = $(TCLNAMEPREFIX)$(VERSION)p.lib -TCLSTUBLIB = $(TCLSTUBPREFIX)$(VERSION)$(DBGX).lib -TKDLLNAME = $(TKNAMEPREFIX)$(VERSION)$(DBGX).dll -TKDLL = $(OUTDIR)\$(TKDLLNAME) -TKLIB = $(OUTDIR)\$(TKNAMEPREFIX)$(VERSION)$(DBGX).lib -TKSTUBLIBNAME = $(TKSTUBPREFIX)$(VERSION)$(DBGX).lib -TKSTUBLIB = $(OUTDIR)\$(TKSTUBLIBNAME) -TKPLUGINDLLNAME = $(TKNAMEPREFIX)$(VERSION)p$(DBG).dll -TKPLUGINDLL = $(OUTDIR)\$(TKPLUGINDLLNAME) -TKPLUGINLIB = $(OUTDIR)\$(TKNAMEPREFIX)$(VERSION)p$(DBGX).lib - -WISH = $(OUTDIR)\$(WISHNAMEPREFIX)$(VERSION)$(DBGX).exe -WISHC = $(OUTDIR)\$(WISHNAMEPREFIX)c$(VERSION)$(DBGX).exe -WISHP = $(OUTDIR)\$(WISHNAMEPREFIX)p$(VERSION)$(DBGX).exe -TKTEST = $(OUTDIR)\$(TKNAMEPREFIX)test.exe -CAT32 = $(TMPDIR)\cat32.exe - -BIN_INSTALL_DIR = $(INSTALLDIR)\bin -INCLUDE_INSTALL_DIR = $(INSTALLDIR)\include -LIB_INSTALL_DIR = $(INSTALLDIR)\lib -SCRIPT_INSTALL_DIR = $(LIB_INSTALL_DIR)\tk$(DOTVERSION) +LIB_INSTALL_DIR = $(_INSTALLDIR)\lib +BIN_INSTALL_DIR = $(_INSTALLDIR)\bin +DOC_INSTALL_DIR = $(_INSTALLDIR)\doc +SCRIPT_INSTALL_DIR = $(_INSTALLDIR)\lib\$(PROJECT)$(DOTVERSION) +INCLUDE_INSTALL_DIR = $(_INSTALLDIR)\include WISHOBJS = \ - $(TMPDIR)\winMain.obj + $(TMP_DIR)\winMain.obj \ +!if $(TCL_LINKWITHEXTENSIONS) + $(TCLDDELIB) \ + $(TCLREGLIB) \ +!endif + $(TMP_DIR)\wish.res TKTESTOBJS = \ - $(TMPDIR)\tkTest.obj \ - $(TMPDIR)\tkSquare.obj \ - $(TMPDIR)\testMain.obj \ - $(TMPDIR)\tkWinTest.obj \ - $(TCLLIBDIR)\tclThreadTest.obj + $(TMP_DIR)\tkTest.obj \ + $(TMP_DIR)\tkSquare.obj \ + $(TMP_DIR)\testMain.obj \ + $(TMP_DIR)\tkWinTest.obj \ + $(TCLTMP_DIR)\tclThreadTest.obj XLIBOBJS = \ - $(TMPDIR)\xcolors.obj \ - $(TMPDIR)\xdraw.obj \ - $(TMPDIR)\xgc.obj \ - $(TMPDIR)\ximage.obj \ - $(TMPDIR)\xutil.obj + $(TMP_DIR)\xcolors.obj \ + $(TMP_DIR)\xdraw.obj \ + $(TMP_DIR)\xgc.obj \ + $(TMP_DIR)\ximage.obj \ + $(TMP_DIR)\xutil.obj TKOBJS = \ - $(TMPDIR)\tkConsole.obj \ - $(TMPDIR)\tkUnixMenubu.obj \ - $(TMPDIR)\tkUnixScale.obj \ + $(TMP_DIR)\tkConsole.obj \ + $(TMP_DIR)\tkUnixMenubu.obj \ + $(TMP_DIR)\tkUnixScale.obj \ $(XLIBOBJS) \ - $(TMPDIR)\tkWin3d.obj \ - $(TMPDIR)\tkWin32Dll.obj \ - $(TMPDIR)\tkWinButton.obj \ - $(TMPDIR)\tkWinClipboard.obj \ - $(TMPDIR)\tkWinColor.obj \ - $(TMPDIR)\tkWinConfig.obj \ - $(TMPDIR)\tkWinCursor.obj \ - $(TMPDIR)\tkWinDialog.obj \ - $(TMPDIR)\tkWinDraw.obj \ - $(TMPDIR)\tkWinEmbed.obj \ - $(TMPDIR)\tkWinFont.obj \ - $(TMPDIR)\tkWinImage.obj \ - $(TMPDIR)\tkWinInit.obj \ - $(TMPDIR)\tkWinKey.obj \ - $(TMPDIR)\tkWinMenu.obj \ - $(TMPDIR)\tkWinPixmap.obj \ - $(TMPDIR)\tkWinPointer.obj \ - $(TMPDIR)\tkWinRegion.obj \ - $(TMPDIR)\tkWinScrlbr.obj \ - $(TMPDIR)\tkWinSend.obj \ - $(TMPDIR)\tkWinWindow.obj \ - $(TMPDIR)\tkWinWm.obj \ - $(TMPDIR)\tkWinX.obj \ - $(TMPDIR)\stubs.obj \ - $(TMPDIR)\tk3d.obj \ - $(TMPDIR)\tkArgv.obj \ - $(TMPDIR)\tkAtom.obj \ - $(TMPDIR)\tkBind.obj \ - $(TMPDIR)\tkBitmap.obj \ - $(TMPDIR)\tkButton.obj \ - $(TMPDIR)\tkCanvArc.obj \ - $(TMPDIR)\tkCanvBmap.obj \ - $(TMPDIR)\tkCanvImg.obj \ - $(TMPDIR)\tkCanvLine.obj \ - $(TMPDIR)\tkCanvPoly.obj \ - $(TMPDIR)\tkCanvPs.obj \ - $(TMPDIR)\tkCanvText.obj \ - $(TMPDIR)\tkCanvUtil.obj \ - $(TMPDIR)\tkCanvWind.obj \ - $(TMPDIR)\tkCanvas.obj \ - $(TMPDIR)\tkClipboard.obj \ - $(TMPDIR)\tkCmds.obj \ - $(TMPDIR)\tkColor.obj \ - $(TMPDIR)\tkConfig.obj \ - $(TMPDIR)\tkCursor.obj \ - $(TMPDIR)\tkEntry.obj \ - $(TMPDIR)\tkError.obj \ - $(TMPDIR)\tkEvent.obj \ - $(TMPDIR)\tkFileFilter.obj \ - $(TMPDIR)\tkFocus.obj \ - $(TMPDIR)\tkFont.obj \ - $(TMPDIR)\tkFrame.obj \ - $(TMPDIR)\tkGC.obj \ - $(TMPDIR)\tkGeometry.obj \ - $(TMPDIR)\tkGet.obj \ - $(TMPDIR)\tkGrab.obj \ - $(TMPDIR)\tkGrid.obj \ - $(TMPDIR)\tkImage.obj \ - $(TMPDIR)\tkImgBmap.obj \ - $(TMPDIR)\tkImgGIF.obj \ - $(TMPDIR)\tkImgPPM.obj \ - $(TMPDIR)\tkImgPhoto.obj \ - $(TMPDIR)\tkImgUtil.obj \ - $(TMPDIR)\tkListbox.obj \ - $(TMPDIR)\tkMacWinMenu.obj \ - $(TMPDIR)\tkMain.obj \ - $(TMPDIR)\tkMenu.obj \ - $(TMPDIR)\tkMenubutton.obj \ - $(TMPDIR)\tkMenuDraw.obj \ - $(TMPDIR)\tkMessage.obj \ - $(TMPDIR)\tkObj.obj \ - $(TMPDIR)\tkOldConfig.obj \ - $(TMPDIR)\tkOption.obj \ - $(TMPDIR)\tkPack.obj \ - $(TMPDIR)\tkPlace.obj \ - $(TMPDIR)\tkPointer.obj \ - $(TMPDIR)\tkRectOval.obj \ - $(TMPDIR)\tkScale.obj \ - $(TMPDIR)\tkScrollbar.obj \ - $(TMPDIR)\tkSelect.obj \ - $(TMPDIR)\tkText.obj \ - $(TMPDIR)\tkTextBTree.obj \ - $(TMPDIR)\tkTextDisp.obj \ - $(TMPDIR)\tkTextImage.obj \ - $(TMPDIR)\tkTextIndex.obj \ - $(TMPDIR)\tkTextMark.obj \ - $(TMPDIR)\tkTextTag.obj \ - $(TMPDIR)\tkTextWind.obj \ - $(TMPDIR)\tkTrig.obj \ - $(TMPDIR)\tkUtil.obj \ - $(TMPDIR)\tkVisual.obj \ - $(TMPDIR)\tkStubInit.obj \ - $(TMPDIR)\tkStubLib.obj \ - $(TMPDIR)\tkWindow.obj - -TKSTUBOBJS = $(TMPDIR)\tkStubLib.obj \ - $(TMPDIR)\tkStubImg.obj + $(TMP_DIR)\tkWin3d.obj \ + $(TMP_DIR)\tkWin32Dll.obj \ + $(TMP_DIR)\tkWinButton.obj \ + $(TMP_DIR)\tkWinClipboard.obj \ + $(TMP_DIR)\tkWinColor.obj \ + $(TMP_DIR)\tkWinConfig.obj \ + $(TMP_DIR)\tkWinCursor.obj \ + $(TMP_DIR)\tkWinDialog.obj \ + $(TMP_DIR)\tkWinDraw.obj \ + $(TMP_DIR)\tkWinEmbed.obj \ + $(TMP_DIR)\tkWinFont.obj \ + $(TMP_DIR)\tkWinImage.obj \ + $(TMP_DIR)\tkWinInit.obj \ + $(TMP_DIR)\tkWinKey.obj \ + $(TMP_DIR)\tkWinMenu.obj \ + $(TMP_DIR)\tkWinPixmap.obj \ + $(TMP_DIR)\tkWinPointer.obj \ + $(TMP_DIR)\tkWinRegion.obj \ + $(TMP_DIR)\tkWinScrlbr.obj \ + $(TMP_DIR)\tkWinSend.obj \ + $(TMP_DIR)\tkWinWindow.obj \ + $(TMP_DIR)\tkWinWm.obj \ + $(TMP_DIR)\tkWinX.obj \ + $(TMP_DIR)\stubs.obj \ + $(TMP_DIR)\tk3d.obj \ + $(TMP_DIR)\tkArgv.obj \ + $(TMP_DIR)\tkAtom.obj \ + $(TMP_DIR)\tkBind.obj \ + $(TMP_DIR)\tkBitmap.obj \ + $(TMP_DIR)\tkButton.obj \ + $(TMP_DIR)\tkCanvArc.obj \ + $(TMP_DIR)\tkCanvBmap.obj \ + $(TMP_DIR)\tkCanvImg.obj \ + $(TMP_DIR)\tkCanvLine.obj \ + $(TMP_DIR)\tkCanvPoly.obj \ + $(TMP_DIR)\tkCanvPs.obj \ + $(TMP_DIR)\tkCanvText.obj \ + $(TMP_DIR)\tkCanvUtil.obj \ + $(TMP_DIR)\tkCanvWind.obj \ + $(TMP_DIR)\tkCanvas.obj \ + $(TMP_DIR)\tkClipboard.obj \ + $(TMP_DIR)\tkCmds.obj \ + $(TMP_DIR)\tkColor.obj \ + $(TMP_DIR)\tkConfig.obj \ + $(TMP_DIR)\tkCursor.obj \ + $(TMP_DIR)\tkEntry.obj \ + $(TMP_DIR)\tkError.obj \ + $(TMP_DIR)\tkEvent.obj \ + $(TMP_DIR)\tkFileFilter.obj \ + $(TMP_DIR)\tkFocus.obj \ + $(TMP_DIR)\tkFont.obj \ + $(TMP_DIR)\tkFrame.obj \ + $(TMP_DIR)\tkGC.obj \ + $(TMP_DIR)\tkGeometry.obj \ + $(TMP_DIR)\tkGet.obj \ + $(TMP_DIR)\tkGrab.obj \ + $(TMP_DIR)\tkGrid.obj \ + $(TMP_DIR)\tkImage.obj \ + $(TMP_DIR)\tkImgBmap.obj \ + $(TMP_DIR)\tkImgGIF.obj \ + $(TMP_DIR)\tkImgPPM.obj \ + $(TMP_DIR)\tkImgPhoto.obj \ + $(TMP_DIR)\tkImgUtil.obj \ + $(TMP_DIR)\tkListbox.obj \ + $(TMP_DIR)\tkMacWinMenu.obj \ + $(TMP_DIR)\tkMain.obj \ + $(TMP_DIR)\tkMenu.obj \ + $(TMP_DIR)\tkMenubutton.obj \ + $(TMP_DIR)\tkMenuDraw.obj \ + $(TMP_DIR)\tkMessage.obj \ + $(TMP_DIR)\tkPanedWindow.obj \ + $(TMP_DIR)\tkObj.obj \ + $(TMP_DIR)\tkOldConfig.obj \ + $(TMP_DIR)\tkOption.obj \ + $(TMP_DIR)\tkPack.obj \ + $(TMP_DIR)\tkPlace.obj \ + $(TMP_DIR)\tkPointer.obj \ + $(TMP_DIR)\tkRectOval.obj \ + $(TMP_DIR)\tkScale.obj \ + $(TMP_DIR)\tkScrollbar.obj \ + $(TMP_DIR)\tkSelect.obj \ + $(TMP_DIR)\tkText.obj \ + $(TMP_DIR)\tkTextBTree.obj \ + $(TMP_DIR)\tkTextDisp.obj \ + $(TMP_DIR)\tkTextImage.obj \ + $(TMP_DIR)\tkTextIndex.obj \ + $(TMP_DIR)\tkTextMark.obj \ + $(TMP_DIR)\tkTextTag.obj \ + $(TMP_DIR)\tkTextWind.obj \ + $(TMP_DIR)\tkTrig.obj \ + $(TMP_DIR)\tkUtil.obj \ + $(TMP_DIR)\tkVisual.obj \ + $(TMP_DIR)\tkStubInit.obj \ + $(TMP_DIR)\tkStubLib.obj \ + $(TMP_DIR)\tkWindow.obj \ +!if !$(STATIC_BUILD) + $(TMP_DIR)\tk.res +!endif + +TKSTUBOBJS = \ + $(TMP_DIR)\tkStubLib.obj \ + $(TMP_DIR)\tkStubImg.obj + WINDIR = $(ROOT)\win GENERICDIR = $(ROOT)\generic XLIBDIR = $(ROOT)\xlib BITMAPDIR = $(ROOT)\bitmaps -TCLLIBDIR = $(TCLDIR)\win\$(OUTDIRNAME) +DOCDIR = $(ROOT)\doc RCDIR = $(WINDIR)\rc -TK_INCLUDES = -I$(WINDIR) -I$(GENERICDIR) -I$(BITMAPDIR) -I$(XLIBDIR) \ - -I$(TCLDIR)\generic -TK_DEFINES = $(DEBUGDEFINES) $(THREADDEFINES) +!if $(TCLINSTALL) +TCL_INCLUDES = -I "$(_TCLDIR)\include" +!else +TCL_INCLUDES = -I "$(_TCLDIR)\win" -I "$(_TCLDIR)\generic" +!endif +TK_INCLUDES = -I"$(WINDIR)" -I"$(GENERICDIR)" -I"$(BITMAPDIR)" -I"$(XLIBDIR)" \ + $(TCL_INCLUDES) + +TK_DEFINES = $(OPTDEFINES) -###################################################################### + +#--------------------------------------------------------------------- # Compile flags -###################################################################### - -!IF "$(NODEBUG)" == "1" -!IF "$(MACHINE)" == "IA64" -cdebug = -O2i -Gs -!ELSE -# NOTE: Due to a bug in MSVC, we cannot use -O2 here or Tk starts to misbehave. -cdebug = -Oti -Gs -GD -!ENDIF -!ELSE IF "$(MACHINE)" == "IA64" -cdebug = -Od -Zi -!ELSE -cdebug = -Z7 -Od -WX -!ENDIF +#--------------------------------------------------------------------- + +!if $(DEBUG) +!if "$(MACHINE)" == "IA64" +cdebug = -Od -Zi +!else +cdebug = -Z7 -Od -WX +!endif +!else +# This cranks the optimization level up. We can't use -02 because sometimes +# it causes problems. +cdebug = -Oti +!endif # declarations common to all compiler options -cflags = -c -W3 -nologo -Fp$(TMPDIR)\ -YX -cvarsdll = -MD$(DBGX) +cflags = -nologo -c -W3 -YX -Fp$(TMP_DIR)^\ + +!if $(PENT_0F_ERRATA) +cflags = $(cflags) -QI0f +!endif + +!if $(ITAN_B_ERRATA) +cflags = $(cflags) -QIA64_Bx +!endif + +!if $(MSVCRT) +crt = -MD$(DBGX) +!else +crt = -MT$(DBGX) +!endif -CON_CFLAGS = $(cdebug) $(cflags) $(include32) -DCONSOLE -TK_CFLAGS = $(cdebug) $(cflags) $(cvarsdll) $(include32) \ - $(TK_INCLUDES) $(TK_DEFINES) -DUSE_TCL_STUBS -WISH_CFLAGS = $(cdebug) $(cflags) $(cvarsdll) $(include32) \ - $(TK_INCLUDES) $(TK_DEFINES) +BASE_CLFAGS = $(cdebug) $(cflags) $(crt) $(TK_INCLUDES) +TK_CFLAGS = $(BASE_CLFAGS) $(TK_DEFINES) -DUSE_TCL_STUBS +CON_CFLAGS = $(cdebug) $(cflags) $(crt) -DCONSOLE +WISH_CFLAGS = $(BASE_CLFAGS) $(TK_DEFINES) -###################################################################### + +#--------------------------------------------------------------------- # Link flags -###################################################################### +#--------------------------------------------------------------------- -!IF "$(NODEBUG)" == "1" -ldebug = /RELEASE -!ELSE +!if $(DEBUG) ldebug = -debug:full -debugtype:cv -!ENDIF +!else +ldebug = -release -opt:ref -opt:icf,3 +!endif # declarations common to all linker options -lcommon = /NODEFAULTLIB /RELEASE /NOLOGO -lflags = $(lcommon) /MACHINE:$(MACHINE) $(libpath32) - -# declarations for use on Intel i386, i486, and Pentium systems -!IF "$(MACHINE)" == "IX86" -DLLENTRY = @12 -!ENDIF - -conlflags = $(lflags) -subsystem:console -entry:mainCRTStartup -guilflags = $(lflags) -subsystem:windows -entry:WinMainCRTStartup -dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll - -!IF "$(MACHINE)" == "PPC" -libc = libc$(DBGX).lib -libcdll = crtdll$(DBGX).lib -!ELSE -libc = libc$(DBGX).lib oldnames.lib -libcdll = msvcrt$(DBGX).lib oldnames.lib -!ENDIF - -baselibs = kernel32.lib $(optlibs) advapi32.lib -winlibs = $(baselibs) user32.lib gdi32.lib comdlg32.lib winspool.lib \ - imm32.lib -guilibs = $(libc) $(winlibs) -conlibs = $(libc) $(baselibs) -guilibsdll = $(libcdll) $(winlibs) - -###################################################################### -# Project specific targets -###################################################################### +lflags = -nologo -machine:$(MACHINE) $(ldebug) + +!if $(PROFILE) +lflags = $(lflags) -profile +!endif + +!if $(ALIGN98_HACK) && !$(STATIC_BUILD) +# align sections for PE size savings. +lflags = $(lflags) -opt:nowin98 +!else if !$(ALIGN98_HACK) && $(STATIC_BUILD) +# align sections for speed in loading by choosing the virtual page size. +lflags = $(lflags) -align:4096 +!endif + +!if $(LOIMPACT) +lflags = $(lflags) -ws:aggressive +!endif + +dlllflags = $(lflags) -dll +conlflags = $(lflags) -subsystem:console +guilflags = $(lflags) -subsystem:windows + +baselibs = kernel32.lib advapi32.lib user32.lib +guilibs = $(baselibs) gdi32.lib comdlg32.lib winspool.lib imm32.lib comctl32.lib + + +#--------------------------------------------------------------------- +# TkTest flags +#--------------------------------------------------------------------- + +!if "$(TESTPAT)" != "" +TESTFLAGS = -file $(TESTPAT) +!endif + -all: setup $(WISH) $(CAT32) -install: install-binaries install-libraries -plugin: setup $(TKPLUGINDLL) $(WISHP) -tktest: setup $(TKTEST) $(CAT32) -test: setup $(TKTEST) $(TKLIB) $(CAT32) - set TCL_LIBRARY=$(TCLDIR)/library - set PATH=$(TCLDIR)\win\$(TMPDIRNAME);$(PATH) - $(TKTEST) $(ROOT)/tests/all.tcl | $(CAT32) +#--------------------------------------------------------------------- +# Project specific targets +#--------------------------------------------------------------------- + +release: setup $(TKSTUBLIB) $(WISH) +all: release $(CAT32) +core: setup $(TKSTUBLIB) $(TKLIB) +console-wish : $(WISHC) +install: install-binaries install-libraries install-docs +tktest: setup $(TKTEST) $(CAT32) + + +test: setup $(TKTEST) $(TKLIB) $(CAT32) + set TCL_LIBRARY=$(TCL_LIBRARY) +!if $(TCLINSTALL) + set PATH=$(_TCLDIR)\bin;$(PATH) +!else + set PATH=$(_TCLDIR)\win\$(BUILDDIRTOP);$(PATH) +!endif +!if "$(OS)" == "Windows_NT" || "$(MSVCDIR)" == "IDE" + $(TKTEST) $(ROOT)/tests/all.tcl $(TESTFLAGS) | $(CAT32) +!else + $(TKTEST) $(ROOT)/tests/all.tcl $(TESTFLAGS) | $(CAT32) +!endif runtest: setup $(TKTEST) $(TKLIB) $(CAT32) - set TCL_LIBRARY=$(TCLDIR)/library - set PATH=$(TCLDIR)\win\$(TMPDIRNAME);$(PATH) + set TCL_LIBRARY=$(TCL_LIBRARY) +!if $(TCLINSTALL) + set PATH=$(_TCLDIR)\bin;$(PATH) +!else + set PATH=$(_TCLDIR)\win\$(BUILDDIRTOP);$(PATH) +!endif $(TKTEST) -console-wish : all $(WISHC) - -stubs: - $(TCLDIR)\win\$(TMPDIRNAME)\tclsh$(VERSION)$(DBGX) \ - $(TCLDIR)\tools\genStubs.tcl $(GENERICDIR) \ - $(GENERICDIR)\tk.decls $(GENERICDIR)\tkInt.decls +rundemo: setup $(TKTEST) $(TKLIB) $(CAT32) + set TCL_LIBRARY=$(TCL_LIBRARY) +!if $(TCLINSTALL) + set PATH=$(_TCLDIR)\bin;$(PATH) +!else + set PATH=$(_TCLDIR)\win\$(BUILDDIRTOP);$(PATH) +!endif + $(TKTEST) $(ROOT)\library\demos\widget setup: - @mkd $(TMPDIR) - @mkd $(OUTDIR) + @if not exist $(OUT_DIR)\nul mkdir $(OUT_DIR) + @if not exist $(TMP_DIR)\nul mkdir $(TMP_DIR) -install-binaries: - @mkd "$(BIN_INSTALL_DIR)" - copy $(TKDLL) "$(BIN_INSTALL_DIR)" - copy $(WISH) "$(BIN_INSTALL_DIR)" - @mkd "$(LIB_INSTALL_DIR)" - copy $(TKLIB) "$(LIB_INSTALL_DIR)" +!if !$(STATIC_BUILD) +$(TKIMPLIB): $(TKLIB) +!endif + +$(TKLIB): $(TKOBJS) +!if $(STATIC_BUILD) + $(lib32) -nologo -out:$@ @<< +$** +<< +!else + $(link32) $(dlllflags) -base:@$(COFFBASE),tk -out:$@ $(guilibs) \ + $(TCLSTUBLIB) @<< +$** +<< + -@del $*.exp +!endif -install-libraries: - @mkd "$(INCLUDE_INSTALL_DIR)" - @mkd "$(INCLUDE_INSTALL_DIR)\X11" - copy "$(GENERICDIR)\tk.h" "$(INCLUDE_INSTALL_DIR)" - copy "$(GENERICDIR)\tkDecls.h" "$(INCLUDE_INSTALL_DIR)" - copy "$(GENERICDIR)\tkPlatDecls.h" "$(INCLUDE_INSTALL_DIR)" - copy "$(GENERICDIR)\tkIntXlibDecls.h" "$(INCLUDE_INSTALL_DIR)" - xcopy "$(XLIBDIR)\X11\*.h" "$(INCLUDE_INSTALL_DIR)\X11" - @mkd "$(SCRIPT_INSTALL_DIR)" - @mkd "$(SCRIPT_INSTALL_DIR)\images" - @mkd "$(SCRIPT_INSTALL_DIR)\demos" - @mkd "$(SCRIPT_INSTALL_DIR)\demos\images" - xcopy "$(ROOT)\library" "$(SCRIPT_INSTALL_DIR)" - xcopy "$(ROOT)\library\images" "$(SCRIPT_INSTALL_DIR)\images" - xcopy "$(ROOT)\library\demos" "$(SCRIPT_INSTALL_DIR)\demos" - xcopy "$(ROOT)\library\demos\images" "$(SCRIPT_INSTALL_DIR)\demos\images" - -$(TKLIB): $(TKDLL) $(TKSTUBLIB) $(TKSTUBLIB): $(TKSTUBOBJS) - $(lib32) /out:$@ $(TKSTUBOBJS) + $(lib32) -nologo -out:$@ $** -$(TKDLL): $(TKOBJS) $(TMPDIR)\tk.res - $(link32) $(ldebug) $(dlllflags) \ - -out:$@ $(TMPDIR)\tk.res $(TCLLIBDIR)\$(TCLSTUBLIB) \ - $(guilibsdll) @<< - $(TKOBJS) -<< -$(TKPLUGINLIB): $(TKPLUGINDLL) +$(WISH): $(WISHOBJS) $(TKIMPLIB) + $(link32) $(guilflags) -out:$@ $(guilibs) $(TCLIMPLIB) $** -$(TKPLUGINDLL): $(TKOBJS) $(TMPDIR)\tk.res - $(link32) $(ldebug) $(dlllflags) \ - -out:$@ $(TMPDIR)\tk.res $(TCLLIBDIR)\$(TCLPLUGINLIB) \ - $(guilibsdll) @<< - $(TKOBJS) -<< +$(WISHC): $(WISHOBJS) $(TKIMPLIB) + $(link32) $(conlflags) -out:$@ $(guilibs) $(TCLIMPLIB) $** -$(WISH): $(WISHOBJS) $(TKLIB) $(TMPDIR)\wish.res - $(link32) $(ldebug) $(guilflags) $(TMPDIR)\wish.res -out:$@ \ - $(guilibsdll) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB) $(WISHOBJS) +$(TKTEST): $(TKTESTOBJS) $(TKIMPLIB) + $(link32) $(guilflags) -out:$@ $(guilibs) $(TCLIMPLIB) $** -$(WISHC): $(WISHOBJS) $(TKLIB) $(TMPDIR)\wish.res - $(link32) $(ldebug) $(conlflags) $(TMPDIR)\wish.res -out:$@ \ - $(guilibsdll) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB) $(WISHOBJS) -$(WISHP): $(WISHOBJS) $(TKPLUGINLIB) $(TMPDIR)\wish.res - $(link32) $(ldebug) $(guilflags) $(TMPDIR)\wish.res -out:$@ \ - $(guilibsdll) $(TCLLIBDIR)\$(TCLPLUGINLIB) \ - $(TKPLUGINLIB) $(WISHOBJS) +$(CAT32): $(_TCLDIR)\win\cat.c + $(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $? + $(link32) $(conlflags) -out:$@ -stack:16384 $(TMP_DIR)\cat.obj $(baselibs) -$(TKTEST): $(TKTESTOBJS) $(TKLIB) $(TMPDIR)\wish.res - $(link32) $(ldebug) $(guilflags) $(TMPDIR)\wish.res -out:$@ \ - $(guilibsdll) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB) $(TKTESTOBJS) +install-binaries: + @xcopy /i /y "$(WISH)" "$(BIN_INSTALL_DIR)\" +!if "$(TKLIB)" != "$(TKIMPLIB)" + @xcopy /i /y "$(TKLIB)" "$(BIN_INSTALL_DIR)\" +!endif + @xcopy /i /y "$(TKIMPLIB)" "$(LIB_INSTALL_DIR)\" + @xcopy /i /y "$(TKSTUBLIB)" "$(LIB_INSTALL_DIR)\" -$(CAT32): $(TCLDIR)\win\cat.c - $(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ $? - $(link32) $(conlflags) -out:$@ -stack:16384 $(TMPDIR)\cat.obj $(conlibs) +install-libraries: + @xcopy /i /y "$(GENERICDIR)\tk.h" "$(INCLUDE_INSTALL_DIR)\" + @xcopy /i /y "$(GENERICDIR)\tkDecls.h" "$(INCLUDE_INSTALL_DIR)\" + @xcopy /i /y "$(GENERICDIR)\tkPlatDecls.h" "$(INCLUDE_INSTALL_DIR)\" + @xcopy /i /y "$(GENERICDIR)\tkIntXlibDecls.h" "$(INCLUDE_INSTALL_DIR)\" + @xcopy /i /y "$(XLIBDIR)\X11\*.h" "$(INCLUDE_INSTALL_DIR)\X11\" + @xcopy /i /y "$(ROOT)\library" "$(SCRIPT_INSTALL_DIR)\" /s /exclude:<< +CVS +<< -# + +#--------------------------------------------------------------------- # Regenerate the stubs files. -# +#--------------------------------------------------------------------- genstubs: - tclsh$(VERSION) $(TCLDIR)\tools\genStubs.tcl $(GENERICDIR) \ - $(GENERICDIR)\tk.decls $(GENERICDIR)\tkInt.decls + $(TCLSH) $(_TCLDIR)\tools\genStubs.tcl $(GENERICDIR) \ + $(GENERICDIR)\$(PROJECT).decls $(GENERICDIR)\$(PROJECT)Int.decls + + +#--------------------------------------------------------------------- +# Generate the makefile depedancies. +#--------------------------------------------------------------------- + +depend: +!if !exist($(TCLSH)) + @echo Build tclsh first! +!else + $(TCLSH) $(TOOLSDIR:\=/)/mkdepend.tcl -vc32 -out:"$(OUT_DIR)\depend.mk" \ + -passthru:"-DBUILD_tcl $(TK_INCLUDES:"="")" $(GENERICDIR) \ + $(COMPATDIR) $(WINDIR) @<< +$(TKOBJS) +<< +!endif -# + +#--------------------------------------------------------------------- +# Regenerate the windows help files. +#--------------------------------------------------------------------- + +HLPBASE = $(PROJECT)$(VERSION) +HELPFILE = $(OUT_DIR)\$(HLPBASE).hlp +HELPCNT = $(OUT_DIR)\$(HLPBASE).cnt +DOCTMP_DIR = $(OUT_DIR)\$(PROJECT)_docs +HELPRTF = $(DOCTMP_DIR)\$(PROJECT).rtf +MAN2HELP = $(DOCTMP_DIR)\man2help.tcl +MAN2HELP2 = $(DOCTMP_DIR)\man2help2.tcl +INDEX = $(DOCTMP_DIR)\index.tcl +BMP = $(DOCTMP_DIR)\lamp.bmp +BMP_NOPATH = lamp.bmp +MAN2TCL = $(DOCTMP_DIR)\man2tcl.exe + +winhelp: docsetup $(HELPFILE) + +docsetup: + @if not exist $(DOCTMP_DIR)\nul mkdir $(DOCTMP_DIR) + +$(MAN2HELP) $(MAN2HELP2) $(INDEX): $(TOOLSDIR)\$$(@F) + copy $(TOOLSDIR)\$(@F) $(@D) + +$(BMP): + copy $(WINDIR)\$(@F) $(@D) + +$(HELPFILE): $(HELPRTF) $(BMP) + cd $(DOCTMP_DIR) + start /wait hcrtf.exe -x <<$(PROJECT).hpj +[OPTIONS] +COMPRESS=12 Hall Zeck +LCID=0x409 0x0 0x0 ; English (United States) +TITLE=Tk Reference Manual +BMROOT=. +CNT=$(@B).cnt +HLP=$(@B).hlp + +[FILES] +$(PROJECT).rtf + +[WINDOWS] +main="Tcl/Tk Reference Manual",,27648,(r15263976),(r4227327) + +[CONFIG] +BrowseButtons() +CreateButton(1, "Web", ExecFile("http://www.tcl.tk")) +CreateButton(2, "SF", ExecFile("http://sf.net/projects/tcl")) +CreateButton(3, "Wiki", ExecFile("http://wiki.tcl.tk")) +CreateButton(4, "FAQ", ExecFile("http://www.purl.org/NET/Tcl-FAQ/")) +<< + cd $(MAKEDIR) + copy "$(DOCTMP_DIR)\$(@B).hlp" "$(OUT_DIR)" + copy "$(DOCTMP_DIR)\$(@B).cnt" "$(OUT_DIR)" + +$(MAN2TCL): $(TOOLSDIR)\$$(@B).c + $(cc32) -nologo -G4 -ML -O2 -Fo$(@D)\ $(TOOLSDIR)\$(@B).c -link -out:$@ + +$(HELPRTF): $(MAN2TCL) $(MAN2HELP) $(MAN2HELP2) $(INDEX) + $(TCLSH) $(MAN2HELP:\=/) -bitmap $(BMP_NOPATH) $(PROJECT) $(VERSION) $(DOCDIR:\=/) + +install-docs: +!if exist($(HELPFILE)) + @xcopy /i /y "$(HELPFILE)" "$(DOC_INSTALL_DIR)\" + @xcopy /i /y "$(HELPCNT)" "$(DOC_INSTALL_DIR)\" + $(TCLSH) << +puts "Installing $(PROJECT)'s helpfile contents into Tcl's ..." +set f [open "$(DOC_INSTALL_DIR:\=/)/tcl$(VERSION).cnt" r] +while {![eof $$f]} { + if {[regexp {:Include $(PROJECT)([0-9]{2}).cnt} [gets $$f] dummy ver]} { + if {$$ver == $(VERSION)} { + puts "Already installed." + exit + } else { + # do something here logical to remove (or replace) it. + puts "$$ver != $(VERSION), unfinished code path, die, die!" + exit 1 + } + } +} +close $$f +set f [open $(DOC_INSTALL_DIR:\=/)/tcl$(VERSION).cnt a] +puts $$f {:Include $(HLPBASE).cnt} +close $$f +<< + start /wait winhlp32 -g $(DOC_INSTALL_DIR)\tcl$(VERSION).hlp +!endif + +#--------------------------------------------------------------------- # Special case object file targets -# +#--------------------------------------------------------------------- -$(TMPDIR)\testMain.obj: $(WINDIR)\winMain.c +$(TMP_DIR)\testMain.obj: $(WINDIR)\winMain.c +!if $(TCL_LINKWITHEXTENSIONS) + $(cc32) $(WISH_CFLAGS) -DTK_TEST -DTCL_LINKWITHEXTENSIONS -Fo$@ $? +!else $(cc32) $(WISH_CFLAGS) -DTK_TEST -Fo$@ $? +!endif -$(TMPDIR)\tkTest.obj: $(GENERICDIR)\tkTest.c +$(TMP_DIR)\tkTest.obj: $(GENERICDIR)\tkTest.c $(cc32) $(WISH_CFLAGS) -Fo$@ $? -$(TMPDIR)\tkWinTest.obj: $(WINDIR)\tkWinTest.c +$(TMP_DIR)\tkWinTest.obj: $(WINDIR)\tkWinTest.c $(cc32) $(WISH_CFLAGS) -Fo$@ $? -$(TMPDIR)\tkSquare.obj: $(GENERICDIR)\tkSquare.c +$(TMP_DIR)\tkSquare.obj: $(GENERICDIR)\tkSquare.c $(cc32) $(WISH_CFLAGS) -Fo$@ $? -$(TMPDIR)\winMain.obj: $(WINDIR)\winMain.c +$(TMP_DIR)\winMain.obj: $(WINDIR)\winMain.c +!if $(TCL_LINKWITHEXTENSIONS) + $(cc32) $(WISH_CFLAGS) -DTCL_LINKWITHEXTENSIONS -Fo$@ $? +!else $(cc32) $(WISH_CFLAGS) -Fo$@ $? +!endif -$(TMPDIR)\tkStubLib.obj : $(GENERICDIR)\tkStubLib.c - $(cc32) $(TK_CFLAGS) -DSTATIC_BUILD -Fo$@ $? - -# -# Implicit rules -# +# The following objects are part of the stub library and should not +# be built as DLL objects but none of the symbols should be exported +# and no reference made to a C runtime. -{$(XLIBDIR)}.c{$(TMPDIR)}.obj: - $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $< +$(TMP_DIR)\tkStubLib.obj : $(GENERICDIR)\tkStubLib.c + $(cc32) $(cdebug) $(cflags) $(TK_INCLUDES) -Zl -DSTATIC_BUILD -Fo$@ $? -{$(GENERICDIR)}.c{$(TMPDIR)}.obj: - $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $< +$(TMP_DIR)\tkStubImg.obj : $(GENERICDIR)\tkStubImg.c + $(cc32) $(cdebug) $(cflags) $(TK_INCLUDES) -Zl -DSTATIC_BUILD -Fo$@ $? -{$(WINDIR)}.c{$(TMPDIR)}.obj: - $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $< -{$(ROOT)\unix}.c{$(TMPDIR)}.obj: - $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $< +#--------------------------------------------------------------------- +# Dedependency rules +#--------------------------------------------------------------------- -{$(RCDIR)}.rc{$(TMPDIR)}.res: - $(rc32) -fo $@ -r -i "$(GENERICDIR)" -i "$(TOOLS32)\include" \ - -i "$(TCLDIR)\generic" \ -!if "$(NODEBUG)" == "0" - -d DEBUG \ -!endif - $< - -clean: - -@del $(OUTDIR)\*.exp - -@del $(OUTDIR)\*.lib - -@del $(OUTDIR)\*.dll - -@del $(OUTDIR)\*.exe - -@del $(OUTDIR)\*.pdb - -@del $(TMPDIR)\*.pch - -@del $(TMPDIR)\*.obj - -@del $(TMPDIR)\*.res - -@del $(TMPDIR)\*.exe - -@rmd $(OUTDIR) - -@rmd $(TMPDIR) - -# dependencies - -$(TMPDIR)\tk.res: \ +$(TMP_DIR)\tk.res: \ $(RCDIR)\buttons.bmp \ $(RCDIR)\cursor*.cur \ $(RCDIR)\tk.ico @@ -502,6 +748,7 @@ $(GENERICDIR)/tkListbox.c: $(GENERICDIR)/default.h $(GENERICDIR)/tkMenu.c: $(GENERICDIR)/default.h $(GENERICDIR)/tkMenubutton.c: $(GENERICDIR)/default.h $(GENERICDIR)/tkMessage.c: $(GENERICDIR)/default.h +$(GENERICDIR)/tkPanedWindow.c: $(GENERICDIR)/default.h $(GENERICDIR)/tkScale.c: $(GENERICDIR)/default.h $(GENERICDIR)/tkScrollbar.c: $(GENERICDIR)/default.h $(GENERICDIR)/tkText.c: $(GENERICDIR)/default.h @@ -523,3 +770,63 @@ $(GENERICDIR)/tkMenu.c: $(GENERICDIR)/tkMenu.h $(GENERICDIR)/tkMenuDraw.c: $(GENERICDIR)/tkMenu.h $(WINDIR)/tkWinMenu.c: $(GENERICDIR)/tkMenu.h +!if exist("$(OUT_DIR)\depend.mk") +!include "$(OUT_DIR)\depend.mk" +!message *** Dependency rules in effect. +!else +!message *** Dependency rules are not being used. +!endif + +### add a spacer in the output +!message + +#--------------------------------------------------------------------- +# Implicit rules +#--------------------------------------------------------------------- + +{$(XLIBDIR)}.c{$(TMP_DIR)}.obj:: + $(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<< +$< +<< + +{$(GENERICDIR)}.c{$(TMP_DIR)}.obj:: + $(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<< +$< +<< + +{$(WINDIR)}.c{$(TMP_DIR)}.obj:: + $(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<< +$< +<< + +{$(ROOT)\unix}.c{$(TMP_DIR)}.obj:: + $(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<< +$< +<< + +{$(RCDIR)}.rc{$(TMP_DIR)}.res: + $(rc32) -fo $@ -r -i "$(GENERICDIR)" $(TCL_INCLUDES) \ +!if $(DEBUG) + -d DEBUG \ +!endif +!if $(TCL_THREADS) + -d TCL_THREADS \ +!endif +!if $(STATIC_BUILD) + -d STATIC_BUILD \ +!endif + $< + +#--------------------------------------------------------------------- +# Clean up +#--------------------------------------------------------------------- + +clean: + -@$(RMDIR) $(TMP_DIR) + +hose: clean + -@$(RMDIR) $(OUT_DIR) + + +.SUFFIXES: +.SUFFIXES:.c .rc diff --git a/win/mkd.bat b/win/mkd.bat index f9f3eaf..e08280b 100644 --- a/win/mkd.bat +++ b/win/mkd.bat @@ -1,22 +1,13 @@ -@echo off
-rem RCS: @(#) $Id: mkd.bat,v 1.4 2001/09/08 22:34:42 mdejong Exp $
-
-if exist %1\tag.txt goto end
-
-if "%OS%" == "Windows_NT" goto winnt
-
-md %1
-if errorlevel 1 goto end
-
-goto success
-
-:winnt
-md %1
-if errorlevel 1 goto end
-
-:success
-echo TAG >%1\tag.txt
-echo created directory %1
-
-:end
-
+@echo off +rem RCS: @(#) $Id: mkd.bat,v 1.4.2.1 2002/06/10 05:38:27 wolfsuit Exp $ + +if exist %1\nul goto end + +md %1 +if errorlevel 1 goto end + +echo Created directory %1 + +:end + + diff --git a/win/nmakehlp.c b/win/nmakehlp.c index 42a168c..62bc181 100644 --- a/win/nmakehlp.c +++ b/win/nmakehlp.c @@ -9,7 +9,7 @@ * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * ---------------------------------------------------------------------------- - * RCS: @(#) $Id: nmakehlp.c,v 1.1.4.1 2002/06/10 05:08:00 wolfsuit Exp $ + * RCS: @(#) $Id: nmakehlp.c,v 1.1.4.2 2002/06/10 05:38:27 wolfsuit Exp $ * ---------------------------------------------------------------------------- */ #include <windows.h> diff --git a/win/rmd.bat b/win/rmd.bat index 2669f37..b0179d1 100644 --- a/win/rmd.bat +++ b/win/rmd.bat @@ -1,26 +1,21 @@ -@echo off
-rem RCS: @(#) $Id: rmd.bat,v 1.4 2001/09/08 22:34:42 mdejong Exp $
-
-if not exist %1\tag.txt goto end
-
-echo Removing directory %1
-
-if "%OS%" == "Windows_NT" goto winnt
-
-cd %1
-if errorlevel 1 goto end
-del *.*
-cd ..
-rmdir %1
-if errorlevel 1 goto end
-goto success
-
-:winnt
-rmdir %1 /s /q
-if errorlevel 1 goto end
-
-:success
-echo deleted directory %1
-
-:end
-
+@echo off +rem RCS: @(#) $Id: rmd.bat,v 1.4.2.1 2002/06/10 05:38:27 wolfsuit Exp $ + +if not exist %1\nul goto end + +echo Removing directory %1 + +if "%OS%" == "Windows_NT" goto winnt + +deltree /y %1 +if errorlevel 1 goto end +goto success + +:winnt +rmdir /s /q %1 +if errorlevel 1 goto end + +:success +echo Deleted directory %1 + +:end diff --git a/win/rules.vc b/win/rules.vc index 8496d8a..3a6b808 100644 --- a/win/rules.vc +++ b/win/rules.vc @@ -7,10 +7,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# Copyright (c) 2001 Tomasoft Engineering. +# Copyright (c) 2001-2002 David Gravereaux. # #------------------------------------------------------------------------------ -# RCS: @(#) $Id: rules.vc,v 1.1.2.1 2002/02/05 02:25:18 wolfsuit Exp $ +# RCS: @(#) $Id: rules.vc,v 1.1.2.2 2002/06/10 05:38:27 wolfsuit Exp $ #------------------------------------------------------------------------------ !ifndef _RULES_VC @@ -29,61 +29,128 @@ INSTALLDIR = C:\Progra~1\Tcl MACHINE = IX86 !endif +!message =============================================================================== + +#---------------------------------------------------------- +# build the helper app we need to overcome nmake's limiting +# environment. +#---------------------------------------------------------- + +!if !exist(nmakehlp.exe) +!if [$(cc32) -nologo -ML nmakehlp.c -link -subsystem:console > nul] +!endif +!endif + +#---------------------------------------------------------- +# Test for compiler features +#---------------------------------------------------------- + +### test for optimizations +!if [nmakehlp -c -Ox] +!message *** Compiler has 'Optimizations' +OPTIMIZING = 1 +!else +!message *** Compiler doesn't have 'Optimizations' +OPTIMIZING = 0 +!endif + +!if "$(MACHINE)" == "IX86" +### test for pentium errata +!if [nmakehlp -c -QI0f] +!message *** Compiler has 'Pentium 0x0f fix' +PENT_0F_ERRATA = 1 +!else +!message *** Compiler doesn't have 'Pentium 0x0f fix' +PENT_0F_ERRATA = 0 +!endif +### test for -align:4096, when align:512 will do. +!if [nmakehlp -l -opt:nowin98] +!message *** Linker has 'Win98 alignment problem' +ALIGN98_HACK = 1 +!else +!message *** Linker doesn't have 'Win98 alignment problem' +ALIGN98_HACK = 0 +!endif +!else +PENT_0F_ERRATA = 0 +ALIGN98_HACK = 0 +!endif + +!if "$(MACHINE)" == "IA64" +### test for Itanium errata +!if [nmakehlp -c -QIA64_Bx] +!message *** Compiler has 'B-stepping errata workarounds' +ITAN_B_ERRATA = 1 +!else +!message *** Compiler doesn't have 'B-stepping errata workarounds' +ITAN_B_ERRATA = 0 +!endif +!else +ITAN_B_ERRATA = 0 +!endif #---------------------------------------------------------- # Decode the options requested. #---------------------------------------------------------- -!if "$(OPTS)" == "" || ![echo $(OPTS) | find /i "none" > nul] + +!if "$(OPTS)" == "" || [nmakehlp -f "$(OPTS)" "none"] STATIC_BUILD = 0 TCL_THREADS = 0 DEBUG = 0 PROFILE = 0 MSVCRT = 0 +LOIMPACT = 0 TCL_LINKWITHEXTENSIONS = 0 !else -!if ![echo $(OPTS) | find /i "static" > nul] +!if [nmakehlp -f $(OPTS) "static"] !message *** Doing static STATIC_BUILD = 1 !else STATIC_BUILD = 0 !endif -!if ![echo $(OPTS) | find /i "msvcrt" > nul] +!if [nmakehlp -f $(OPTS) "msvcrt"] !message *** Doing msvcrt MSVCRT = 1 !else MSVCRT = 0 !endif -!if ![echo $(OPTS) | find /i "linkexten" > nul] +!if [nmakehlp -f $(OPTS) "linkexten"] !message *** Doing linkexten TCL_LINKWITHEXTENSIONS = 1 !else TCL_LINKWITHEXTENSIONS = 0 !endif -!if ![echo $(OPTS) | find /i "threads" > nul] +!if [nmakehlp -f $(OPTS) "threads"] !message *** Doing threads TCL_THREADS = 1 !else TCL_THREADS = 0 !endif -!if ![echo $(OPTS) | find /i "symbols" > nul] +!if [nmakehlp -f $(OPTS) "symbols"] !message *** Doing symbols DEBUG = 1 !else DEBUG = 0 !endif -!if ![echo $(OPTS) | find /i "profile" > nul] +!if [nmakehlp -f $(OPTS) "profile"] !message *** Doing profile PROFILE = 1 !else PROFILE = 0 !endif +!if [nmakehlp -f $(OPTS) "loimpact"] +!message *** Doing loimpact +LOIMPACT = 1 +!else +LOIMPACT = 0 +!endif !endif !if !$(STATIC_BUILD) # Make sure we don't build overly fat DLLs. MSVCRT = 1 -# Shouldn't statically put the extensions inside the shell when dynamic. +# We shouldn't statically put the extensions inside the shell when dynamic. TCL_LINKWITHEXTENSIONS = 0 !endif @@ -140,25 +207,22 @@ OUT_DIR = $(TMP_DIR) !endif !endif -!message *** Intermediate directory will be '$(TMP_DIR)' -!message *** Output directory will be '$(OUT_DIR)' -!message *** Suffix for binaries will be '$(SUFX)' - #---------------------------------------------------------- # Decode the statistics requested. #---------------------------------------------------------- -!if "$(STATS)" == "" || ![echo $(STATS) | find /i "none" > nul] + +!if "$(STATS)" == "" || [nmakehlp -f "$(STATS)" "none"] TCL_MEM_DEBUG = 0 TCL_COMPILE_DEBUG = 0 !else -!if ![echo $(STATS) | find /i "memdbg" > nul] +!if [nmakehlp -f $(STATS) "memdbg"] !message *** Doing memdbg TCL_MEM_DEBUG = 1 !else TCL_MEM_DEBUG = 0 !endif -!if ![echo $(STATS) | find /i "compdbg" > nul] +!if [nmakehlp -f $(STATS) "compdbg"] !message *** Doing compdbg TCL_COMPILE_DEBUG = 1 !else @@ -166,6 +230,11 @@ TCL_COMPILE_DEBUG = 0 !endif !endif + +#---------------------------------------------------------- +# Set our defines armed with our options. +#---------------------------------------------------------- + OPTDEFINES = !if $(TCL_MEM_DEBUG) OPTDEFINES = -DTCL_MEM_DEBUG @@ -180,6 +249,14 @@ OPTDEFINES = $(OPTDEFINES) -DTCL_THREADS=1 OPTDEFINES = $(OPTDEFINES) -DSTATIC_BUILD !endif + +#---------------------------------------------------------- +# Display stats being used. +#---------------------------------------------------------- + +!message *** Intermediate directory will be '$(TMP_DIR)' +!message *** Output directory will be '$(OUT_DIR)' +!message *** Suffix for binaries will be '$(SUFX)' !message *** Optional defines are '$(OPTDEFINES)' !endif @@ -530,7 +530,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ EXTRA_CFLAGS="-YX" CFLAGS_WARNING="-W3" - LDFLAGS_DEBUG="-debug:full -debugtype:cv" + LDFLAGS_DEBUG="-debug:full -debugtype:both" LDFLAGS_OPTIMIZE="-release" # Specify the CC output file names based on the target name diff --git a/win/tkWinButton.c b/win/tkWinButton.c index 1d9850c..736ca1b 100644 --- a/win/tkWinButton.c +++ b/win/tkWinButton.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinButton.c,v 1.12.4.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkWinButton.c,v 1.12.4.2 2002/06/10 05:38:27 wolfsuit Exp $ */ #define OEMRESOURCE @@ -706,6 +706,10 @@ TkpDisplayButton(clientData) TkWinReleaseDrawableDC(pixmap, dc, &state); } + if (butPtr->flags & GOT_FOCUS) { + Tk_SetCaretPos(tkwin, x, y, 0 /* not used */); + } + /* * Copy the information from the off-screen pixmap onto the screen, * then delete the pixmap. diff --git a/win/tkWinCursor.c b/win/tkWinCursor.c index dabb9e4..96f3bee 100644 --- a/win/tkWinCursor.c +++ b/win/tkWinCursor.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinCursor.c,v 1.4.8.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkWinCursor.c,v 1.4.8.2 2002/06/10 05:38:28 wolfsuit Exp $ */ #include "tkWinInt.h" @@ -87,59 +87,72 @@ TkGetCursorByName(interp, tkwin, string) { struct CursorName *namePtr; TkWinCursor *cursorPtr; + int argc; + CONST char **argv = NULL; /* - * Check for the cursor in the system cursor set. + * All cursor names are valid lists of one element (for + * Unix-compatability), even unadorned system cursor names. */ - for (namePtr = cursorNames; namePtr->name != NULL; namePtr++) { - if (strcmp(namePtr->name, string) == 0) { - break; - } + if (Tcl_SplitList(interp, string, &argc, &argv) != TCL_OK) { + return NULL; + } + if (argc != 1) { + ckfree((char *) argv); + goto badCursorSpec; } cursorPtr = (TkWinCursor *) ckalloc(sizeof(TkWinCursor)); cursorPtr->info.cursor = (Tk_Cursor) cursorPtr; cursorPtr->winCursor = NULL; - if (namePtr->name != NULL) { - cursorPtr->winCursor = LoadCursor(NULL, namePtr->id); - cursorPtr->system = 1; - } - if (cursorPtr->winCursor == NULL) { - cursorPtr->winCursor = LoadCursor(Tk_GetHINSTANCE(), string); - cursorPtr->system = 0; - } - if (string[0] == '@') { - int argc; - CONST char **argv = NULL; - if (Tcl_SplitList(interp, string, &argc, &argv) != TCL_OK) { - return NULL; - } + + if (argv[0][0] == '@') { /* * Check for system cursor of type @<filename>, where only - * the name is allowed. This accepts either: + * the name is allowed. This accepts any of: * -cursor @/winnt/cursors/globe.ani * -cursor @C:/Winnt/cursors/E_arrow.cur * -cursor {@C:/Program\ Files/Cursors/bart.ani} + * -cursor {{@C:/Program Files/Cursors/bart.ani}} + * -cursor [list @[file join "C:/Program Files" Cursors bart.ani]] */ - if ((argc != 1) || (argv[0][0] != '@')) { - ckfree((char *) argv); - goto badCursorSpec; - } + if (Tcl_IsSafe(interp)) { Tcl_AppendResult(interp, "can't get cursor from a file in", " a safe interpreter", (char *) NULL); ckfree((char *) argv); - ckfree((char *)cursorPtr); + ckfree((char *) cursorPtr); return NULL; } cursorPtr->winCursor = LoadCursorFromFile(&(argv[0][1])); cursorPtr->system = 0; - ckfree((char *) argv); + } else { + /* + * Check for the cursor in the system cursor set. + */ + + for (namePtr = cursorNames; namePtr->name != NULL; namePtr++) { + if (strcmp(namePtr->name, name[0]) == 0) { + /* + * It is either a system cursor or one of ours! + */ + cursorPtr->winCursor = LoadCursor(NULL, namePtr->id); + if (cursorPtr->winCursor == NULL) { + cursorPtr->winCursor = + LoadCursor(Tk_GetHINSTANCE(), name[0]); + cursorPtr->system = 0; + } else { + cursorPtr->system = 1; + } + } + } } + ckfree((char *) argv); + if (cursorPtr->winCursor == NULL) { - badCursorSpec: - ckfree((char *)cursorPtr); + badCursorSpec: + ckfree((char *) cursorPtr); Tcl_AppendResult(interp, "bad cursor spec \"", string, "\"", (char *) NULL); return NULL; diff --git a/win/tkWinDefault.h b/win/tkWinDefault.h index 679e7b8..d5aa1a9 100644 --- a/win/tkWinDefault.h +++ b/win/tkWinDefault.h @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinDefault.h,v 1.11.2.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkWinDefault.h,v 1.11.2.2 2002/06/10 05:38:28 wolfsuit Exp $ */ #ifndef _TKWINDEFAULT @@ -359,6 +359,40 @@ #define DEF_MESSAGE_WIDTH "0" /* + * Defaults for panedwindows + */ + +#define DEF_PANEDWINDOW_BG_COLOR NORMAL_BG +#define DEF_PANEDWINDOW_BG_MONO WHITE +#define DEF_PANEDWINDOW_BORDERWIDTH "2" +#define DEF_PANEDWINDOW_CURSOR "" +#define DEF_PANEDWINDOW_HANDLEPAD "8" +#define DEF_PANEDWINDOW_HANDLESIZE "8" +#define DEF_PANEDWINDOW_HEIGHT "" +#define DEF_PANEDWINDOW_OPAQUERESIZE "0" +#define DEF_PANEDWINDOW_ORIENT "horizontal" +#define DEF_PANEDWINDOW_RELIEF "flat" +#define DEF_PANEDWINDOW_SASHCURSOR "" +#define DEF_PANEDWINDOW_SASHPAD "2" +#define DEF_PANEDWINDOW_SASHRELIEF "raised" +#define DEF_PANEDWINDOW_SASHWIDTH "2" +#define DEF_PANEDWINDOW_SHOWHANDLE "0" +#define DEF_PANEDWINDOW_WIDTH "" + +/* + * Defaults for panedwindow panes + */ + +#define DEF_PANEDWINDOW_PANE_AFTER "" +#define DEF_PANEDWINDOW_PANE_BEFORE "" +#define DEF_PANEDWINDOW_PANE_HEIGHT "" +#define DEF_PANEDWINDOW_PANE_MINSIZE "0" +#define DEF_PANEDWINDOW_PANE_PADX "0" +#define DEF_PANEDWINDOW_PANE_PADY "0" +#define DEF_PANEDWINDOW_PANE_STICKY "nsew" +#define DEF_PANEDWINDOW_PANE_WIDTH "" + +/* * Defaults for scales: */ diff --git a/win/tkWinDialog.c b/win/tkWinDialog.c index 894ecc2..a261fb9 100644 --- a/win/tkWinDialog.c +++ b/win/tkWinDialog.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinDialog.c,v 1.22.2.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkWinDialog.c,v 1.22.2.2 2002/06/10 05:38:28 wolfsuit Exp $ * */ @@ -393,9 +393,8 @@ ColorDlgHookProc(hDlg, uMsg, wParam, lParam) ccPtr = (CHOOSECOLOR *) lParam; title = (const char *) ccPtr->lCustData; if ((title != NULL) && (title[0] != '\0')) { - Tcl_WinUtfToTChar(title, -1, &ds); (*tkWinProcs->setWindowText)(hDlg, - (TCHAR *) Tcl_DStringValue(&ds)); + Tcl_WinUtfToTChar(title, -1, &ds)); Tcl_DStringFree(&ds); } if (tsdPtr->debugFlag) { @@ -496,7 +495,6 @@ GetFileNameW(clientData, interp, objc, objv, open) int open; /* 1 to call GetOpenFileName(), 0 to * call GetSaveFileName(). */ { - Tcl_Encoding unicodeEncoding = Tcl_GetEncoding(NULL, "unicode"); OPENFILENAMEW ofn; WCHAR file[TK_MULTI_MAX_PATH]; int result, winCode, oldMode, i, multi = 0; @@ -505,6 +503,7 @@ GetFileNameW(clientData, interp, objc, objv, open) HWND hWnd; Tcl_DString utfFilterString, utfDirString; Tcl_DString extString, filterString, dirString, titleString; + Tcl_Encoding unicodeEncoding = TkWinGetUnicodeEncoding(); ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); static CONST char *saveOptionStrings[] = { @@ -2425,13 +2424,13 @@ Tk_MessageBoxObjCmd(clientData, interp, objc, objv) int objc; /* Number of arguments. */ Tcl_Obj *CONST objv[]; /* Argument objects. */ { - Tcl_Encoding unicodeEncoding = Tcl_GetEncoding(NULL, "unicode"); Tk_Window tkwin, parent; HWND hWnd; char *message, *title; int defaultBtn, icon, type; int i, oldMode, flags, winCode; Tcl_DString messageString, titleString; + Tcl_Encoding unicodeEncoding = TkWinGetUnicodeEncoding(); static CONST char *optionStrings[] = { "-default", "-icon", "-message", "-parent", "-title", "-type", NULL diff --git a/win/tkWinEmbed.c b/win/tkWinEmbed.c index 6fdcfc6..7e83a28 100644 --- a/win/tkWinEmbed.c +++ b/win/tkWinEmbed.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinEmbed.c,v 1.4 2000/07/06 03:17:44 mo Exp $ + * RCS: @(#) $Id: tkWinEmbed.c,v 1.4.6.1 2002/06/10 05:38:28 wolfsuit Exp $ */ #include "tkWinInt.h" @@ -148,6 +148,7 @@ TkpUseWindow(interp, tkwin, string) * for tkwin; must be an integer value. */ { TkWindow *winPtr = (TkWindow *) tkwin; + TkWindow *usePtr; int id; HWND hwnd; Container *containerPtr; @@ -177,6 +178,15 @@ TkpUseWindow(interp, tkwin, string) return TCL_ERROR; } + usePtr = (TkWindow *) Tk_HWNDToWindow(hwnd); + if (usePtr != NULL) { + if (!(usePtr->flags & TK_CONTAINER)) { + Tcl_AppendResult(interp, "window \"", usePtr->pathName, + "\" doesn't have -container option set", (char *) NULL); + return TCL_ERROR; + } + } + /* * Store the parent window in the platform private data slot so * TkWmMapWindow can use it when creating the wrapper window. diff --git a/win/tkWinFont.c b/win/tkWinFont.c index b98e3b9..1903da9 100644 --- a/win/tkWinFont.c +++ b/win/tkWinFont.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinFont.c,v 1.14 2001/09/26 21:36:19 pspjuth Exp $ + * RCS: @(#) $Id: tkWinFont.c,v 1.14.2.1 2002/06/10 05:38:28 wolfsuit Exp $ */ #include "tkWinInt.h" @@ -180,7 +180,6 @@ static Tcl_ThreadDataKey dataKey; * Information cached about the system at startup time. */ -static Tcl_Encoding unicodeEncoding; static Tcl_Encoding systemEncoding; /* @@ -248,7 +247,6 @@ void TkpFontPkgInit( TkMainInfo *mainPtr) /* The application being created. */ { - unicodeEncoding = Tcl_GetEncoding(NULL, "unicode"); if (TkWinGetPlatformId() == VER_PLATFORM_WIN32_NT) { /* * If running NT, then we will be calling some Unicode functions @@ -256,7 +254,7 @@ TkpFontPkgInit( * make sure we convert to/from the Unicode char set. */ - systemEncoding = unicodeEncoding; + systemEncoding = TkWinGetUnicodeEncoding(); } } @@ -1082,7 +1080,7 @@ InitFont( InitSubFont(hdc, hFont, 1, &fontPtr->subFontArray[0]); encoding = fontPtr->subFontArray[0].familyPtr->encoding; - if (encoding == unicodeEncoding) { + if (encoding == TkWinGetUnicodeEncoding()) { GetCharWidthW(hdc, 0, BASE_CHARS - 1, fontPtr->widths); } else { GetCharWidthA(hdc, 0, BASE_CHARS - 1, fontPtr->widths); @@ -1353,7 +1351,7 @@ FreeFontFamily( if (familyPtr->endCount != NULL) { ckfree((char *) familyPtr->endCount); } - if (familyPtr->encoding != unicodeEncoding) { + if (familyPtr->encoding != TkWinGetUnicodeEncoding()) { Tcl_FreeEncoding(familyPtr->encoding); } @@ -1671,7 +1669,7 @@ FontMapLoadPage( familyPtr = subFontPtr->familyPtr; encoding = familyPtr->encoding; - if (familyPtr->encoding == unicodeEncoding) { + if (familyPtr->encoding == TkWinGetUnicodeEncoding()) { /* * Font is Unicode. Few fonts are going to have all characters, so * examine the TrueType character existence metrics to determine diff --git a/win/tkWinImage.c b/win/tkWinImage.c index 448ad72..e641e5e 100644 --- a/win/tkWinImage.c +++ b/win/tkWinImage.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinImage.c,v 1.3 2000/01/06 02:22:51 hobbs Exp $ + * RCS: @(#) $Id: tkWinImage.c,v 1.3.8.1 2002/06/10 05:38:28 wolfsuit Exp $ */ #include "tkWinInt.h" @@ -221,7 +221,7 @@ XCreateImage(display, visual, depth, format, offset, data, width, height, imagePtr->data = data; imagePtr->byte_order = LSBFirst; imagePtr->bitmap_unit = 8; - imagePtr->bitmap_bit_order = MSBFirst; + imagePtr->bitmap_bit_order = LSBFirst; imagePtr->bitmap_pad = bitmap_pad; imagePtr->bits_per_pixel = depth; imagePtr->depth = depth; diff --git a/win/tkWinInit.c b/win/tkWinInit.c index 8e10570..93c49cd 100644 --- a/win/tkWinInit.c +++ b/win/tkWinInit.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinInit.c,v 1.4.8.2 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkWinInit.c,v 1.4.8.3 2002/06/10 05:38:28 wolfsuit Exp $ */ #include "tkWinInt.h" @@ -125,8 +125,8 @@ TkpDisplayWarning(msg, title) CONST char *msg; /* Message to be displayed. */ CONST char *title; /* Title of warning. */ { - Tcl_Encoding unicodeEncoding = Tcl_GetEncoding(NULL, "unicode"); Tcl_DString msgString, titleString; + Tcl_Encoding unicodeEncoding = TkWinGetUnicodeEncoding(); Tcl_UtfToExternalDString(unicodeEncoding, msg, -1, &msgString); Tcl_UtfToExternalDString(unicodeEncoding, title, -1, &titleString); diff --git a/win/tkWinInt.h b/win/tkWinInt.h index 81c643a..23c3843 100644 --- a/win/tkWinInt.h +++ b/win/tkWinInt.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinInt.h,v 1.11.2.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkWinInt.h,v 1.11.2.2 2002/06/10 05:38:28 wolfsuit Exp $ */ #ifndef _TKWININT @@ -193,7 +193,13 @@ EXTERN TkWinProcs *tkWinProcs; #undef TCL_STORAGE_CLASS #define TCL_STORAGE_CLASS DLLIMPORT +/* + * The following allows us to cache these encoding for multiple functions. + */ + + extern Tcl_Encoding TkWinGetKeyInputEncoding _ANSI_ARGS_((void)); +extern Tcl_Encoding TkWinGetUnicodeEncoding _ANSI_ARGS_((void)); #endif /* _TKWININT */ diff --git a/win/tkWinTest.c b/win/tkWinTest.c index bc84e85..57b8c40 100644 --- a/win/tkWinTest.c +++ b/win/tkWinTest.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinTest.c,v 1.5 2001/10/01 21:20:36 hobbs Exp $ + * RCS: @(#) $Id: tkWinTest.c,v 1.5.2.1 2002/06/10 05:38:28 wolfsuit Exp $ */ #include "tkWinInt.h" @@ -121,11 +121,10 @@ AppendSystemError( Tcl_Encoding encoding; encoding = Tcl_GetEncoding(NULL, "unicode"); - Tcl_ExternalToUtfDString(encoding, (char *) wMsgPtr, -1, &ds); + msg = Tcl_ExternalToUtfDString(encoding, (char *) wMsgPtr, -1, &ds); Tcl_FreeEncoding(encoding); LocalFree(wMsgPtr); - msg = Tcl_DStringValue(&ds); length = Tcl_DStringLength(&ds); /* diff --git a/win/tkWinWm.c b/win/tkWinWm.c index cb6bca6..b174152 100644 --- a/win/tkWinWm.c +++ b/win/tkWinWm.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinWm.c,v 1.31.2.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkWinWm.c,v 1.31.2.2 2002/06/10 05:38:28 wolfsuit Exp $ */ #include "tkWinInt.h" @@ -3073,7 +3073,7 @@ Tk_WmCmd(clientData, interp, argc, argv) if ((argc != 3) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], - " stackorder window ?isabove|isbelow? ?window?\"", + " stackorder window ?isabove|isbelow window?\"", (char *) NULL); return TCL_ERROR; } @@ -3261,6 +3261,7 @@ Tk_WmCmd(clientData, interp, argc, argv) } else if ((c == 't') && (strncmp(argv[1], "transient", length) == 0) && (length >= 3)) { TkWindow *masterPtr = wmPtr->masterPtr; + WmInfo *wmPtr2; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", @@ -3290,18 +3291,39 @@ Tk_WmCmd(clientData, interp, argc, argv) if (masterPtr == NULL) { return TCL_ERROR; } - if (masterPtr == winPtr) { - wmPtr->masterPtr = NULL; - } else if (masterPtr != wmPtr->masterPtr) { - Tk_MakeWindowExist((Tk_Window)masterPtr); + while (!(masterPtr->flags & TK_TOP_LEVEL)) { + /* + * Ensure that the master window is actually a Tk toplevel. + */ - /* - * Ensure that the master window is actually a Tk toplevel. - */ + masterPtr = masterPtr->parentPtr; + } + Tk_MakeWindowExist((Tk_Window)masterPtr); - while (!(masterPtr->flags & TK_TOP_LEVEL)) { - masterPtr = masterPtr->parentPtr; - } + if (wmPtr->iconFor != NULL) { + Tcl_AppendResult(interp, "can't make \"", argv[2], + "\" a transient: it is an icon for ", + Tk_PathName(wmPtr->iconFor), + (char *) NULL); + return TCL_ERROR; + } + + wmPtr2 = masterPtr->wmInfoPtr; + + if (wmPtr2->iconFor != NULL) { + Tcl_AppendResult(interp, "can't make \"", argv[3], + "\" a master: it is an icon for ", + Tk_PathName(wmPtr2->iconFor), + (char *) NULL); + return TCL_ERROR; + } + + if (masterPtr == winPtr) { + Tcl_AppendResult(interp, "can't make \"", Tk_PathName(winPtr), + "\" its own master", + (char *) NULL); + return TCL_ERROR; + } else if (masterPtr != wmPtr->masterPtr) { wmPtr->masterPtr = masterPtr; masterPtr->wmInfoPtr->numTransients++; @@ -4335,7 +4357,8 @@ TkWmStackorderToplevelWrapperMap(winPtr, table) HWND wrapper; int newEntry; - if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr)) { + if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr) && + !Tk_IsEmbedded(winPtr)) { wrapper = TkWinGetWrapperWindow((Tk_Window) winPtr); /*fprintf(stderr, "Mapped HWND %d to %x (%s)\n", wrapper, diff --git a/win/tkWinX.c b/win/tkWinX.c index 149e8dd..8dd7eba 100644 --- a/win/tkWinX.c +++ b/win/tkWinX.c @@ -10,10 +10,21 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinX.c,v 1.15.2.1 2002/02/05 02:25:18 wolfsuit Exp $ + * RCS: @(#) $Id: tkWinX.c,v 1.15.2.2 2002/06/10 05:38:28 wolfsuit Exp $ */ #include "tkWinInt.h" + +/* + * The w32api 1.1 package (included in Mingw 1.1) does not define _WIN32_IE + * by default. Define it here to gain access to the InitCommonControlsEx API + * in commctrl.h. + */ + +#ifndef _WIN32_IE +#define _WIN32_IE 0x0300 +#endif + #include <commctrl.h> /* @@ -73,6 +84,7 @@ static Tcl_Encoding keyInputEncoding = NULL;/* The current character * encoding for keyboard input */ static int keyInputCharset = -1; /* The Win32 CHARSET for the keyboard * encoding */ +static Tcl_Encoding unicodeEncoding = NULL; /* unicode encoding */ /* * Thread local storage. Notice that now each thread must have its @@ -268,6 +280,11 @@ TkWinXCleanup(hInstance) UnregisterClass(TK_WIN_CHILD_CLASS_NAME, hInstance); } + if (unicodeEncoding != NULL) { + Tcl_FreeEncoding(unicodeEncoding); + unicodeEncoding = NULL; + } + /* * And let the window manager clean up its own class(es). */ @@ -374,6 +391,8 @@ TkpOpenDisplay(display_name) } display = (Display *) ckalloc(sizeof(Display)); + ZeroMemory(display, sizeof(Display)); + display->display_name = (char *) ckalloc(strlen(display_name)+1); strcpy(display->display_name, display_name); @@ -470,6 +489,7 @@ TkpOpenDisplay(display_name) screen->cmap = XCreateColormap(display, None, screen->root_visual, AllocNone); tsdPtr->winDisplay = (TkDisplay *) ckalloc(sizeof(TkDisplay)); + ZeroMemory(tsdPtr->winDisplay, sizeof(TkDisplay)); tsdPtr->winDisplay->display = display; tsdPtr->updatingClipboard = FALSE; return tsdPtr->winDisplay; @@ -816,6 +836,15 @@ GenerateXEvent(hwnd, message, wParam, lParam) while (otherWinPtr && !(otherWinPtr->flags & TK_TOP_LEVEL)) { otherWinPtr = otherWinPtr->parentPtr; } + + /* + * Do a catch-all Tk_SetCaretPos here to make sure that the + * window receiving focus sets the caret at least once. + */ + if (message == WM_SETFOCUS) { + Tk_SetCaretPos((Tk_Window) winPtr, 0, 0, 0); + } + if (otherWinPtr == winPtr) { return; } @@ -824,6 +853,14 @@ GenerateXEvent(hwnd, message, wParam, lParam) event.type = (message == WM_SETFOCUS) ? FocusIn : FocusOut; event.xfocus.mode = NotifyNormal; event.xfocus.detail = NotifyNonlinear; + + /* + * Destroy the caret if we own it. If we are moving to another Tk + * window, it will reclaim and reposition it with Tk_SetCaretPos. + */ + if (message == WM_KILLFOCUS) { + DestroyCaret(); + } break; } @@ -1221,6 +1258,31 @@ TkWinGetKeyInputEncoding() /* *---------------------------------------------------------------------- * + * TkWinGetUnicodeEncoding -- + * + * Returns the cached unicode encoding. + * + * Results: + * The unicode encoding. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Tcl_Encoding +TkWinGetUnicodeEncoding() +{ + if (unicodeEncoding == NULL) { + unicodeEncoding = Tcl_GetEncoding(NULL, "unicode"); + } + return unicodeEncoding; +} + +/* + *---------------------------------------------------------------------- + * * HandleIMEComposition -- * * This function works around a definciency in some versions @@ -1258,14 +1320,8 @@ HandleIMEComposition(hwnd, lParam) XEvent event; char * buff; TkWindow *winPtr; - - if (TkWinGetPlatformId() != VER_PLATFORM_WIN32_NT) { - /* - * The ImmGetCompositionStringW function works only on WinNT. - */ - - return 0; - } + Tcl_Encoding unicodeEncoding = TkWinGetUnicodeEncoding(); + BOOL isWinNT = (TkWinGetPlatformId() == VER_PLATFORM_WIN32_NT); if ((lParam & GCS_RESULTSTR) == 0) { /* @@ -1277,11 +1333,39 @@ HandleIMEComposition(hwnd, lParam) hIMC = ImmGetContext(hwnd); if (hIMC) { - n = ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, NULL, 0); + if (isWinNT) { + n = ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, NULL, 0); + } else { + n = ImmGetCompositionStringA(hIMC, GCS_RESULTSTR, NULL, 0); + } - if (n > 0) { - buff = (char*)ckalloc(n); - n = ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, buff, n); + if ((n > 0) && ((buff = (char *) ckalloc(n)) != NULL)) { + if (isWinNT) { + n = ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, buff, n); + } else { + Tcl_DString utfString, unicodeString; + + n = ImmGetCompositionStringA(hIMC, GCS_RESULTSTR, buff, n); + Tcl_DStringInit(&utfString); + Tcl_ExternalToUtfDString(keyInputEncoding, buff, n, + &utfString); + Tcl_UtfToExternalDString(unicodeEncoding, + Tcl_DStringValue(&utfString), -1, &unicodeString); + i = Tcl_DStringLength(&unicodeString); + if (n < i) { + /* + * Only alloc more space if we need, otherwise just + * use what we've created. Don't realloc as that may + * copy data we no longer need. + */ + ckfree((char *) buff); + buff = (char *) ckalloc(i); + } + n = i; + memcpy(buff, Tcl_DStringValue(&unicodeString), n); + Tcl_DStringFree(&utfString); + Tcl_DStringFree(&unicodeString); + } /* * Set up the fields pertinent to key event. @@ -1336,7 +1420,7 @@ HandleIMEComposition(hwnd, lParam) * * Tk_FreeXId -- * - * This inteface is not needed under Windows. + * This interface is not needed under Windows. * * Results: * None. @@ -1467,3 +1551,97 @@ TkWinUpdatingClipboard(int mode) tsdPtr->updatingClipboard = mode; } + +/* + *---------------------------------------------------------------------- + * + * Tk_SetCaretPos -- + * + * This enables correct movement of focus in the MS Magnifier, as well + * as allowing us to correctly position the IME Window. The following + * Win32 APIs are used to work with MS caret: + * + * CreateCaret DestroyCaret SetCaretPos GetCaretPos + * + * Only one instance of caret can be active at any time + * (e.g. DestroyCaret API does not take any argument such as handle). + * Since do-it-right approach requires to track the create/destroy + * caret status all the time in a global scope among windows (or + * widgets), we just implement this minimal setup to get the job done. + * + * Results: + * None + * + * Side effects: + * Sets the global Windows caret position. + * + *---------------------------------------------------------------------- + */ + +void +Tk_SetCaretPos(Tk_Window tkwin, int x, int y, int height) +{ + static HWND caretHWND = NULL; + static int lastX = -1, lastY = -1; + Window win; + + /* + * We adjust to the toplevel to get the coords right, as setting + * the IME composition window is based on the toplevel hwnd, so + * ignore height. + */ + + while (!Tk_IsTopLevel(tkwin)) { + x += Tk_X(tkwin); + y += Tk_Y(tkwin); + tkwin = Tk_Parent(tkwin); + if (tkwin == NULL) { + return; + } + } + + win = Tk_WindowId(tkwin); + if (win) { + HIMC hIMC; + HWND hwnd = Tk_GetHWND(win); + + if ((hwnd == caretHWND) && (lastX == x) && (lastY == y)) { + /* + * Prevent processing anything if the values haven't changed. + */ + return; + } + + lastX = x; + lastY = y; + + if (hwnd != caretHWND) { + DestroyCaret(); + if (CreateCaret(hwnd, NULL, 0, 0)) { + caretHWND = hwnd; + } + } + + if (!SetCaretPos(x, y) && CreateCaret(hwnd, NULL, 0, 0)) { + caretHWND = hwnd; + SetCaretPos(x, y); + } + + /* + * The IME composition window should be updated whenever the caret + * position is changed because a clause of the composition string may + * be converted to the final characters and the other clauses still + * stay on the composition window. -- yamamoto + */ + hIMC = ImmGetContext(hwnd); + if (hIMC) { + COMPOSITIONFORM cform; + cform.dwStyle = CFS_POINT; + cform.ptCurrentPos.x = x; + cform.ptCurrentPos.y = y; + ImmSetCompositionWindow(hIMC, &cform); + ImmReleaseContext(hwnd, hIMC); + } + + } +} |