From b508ba671cf1789c5cb2ca29b1d2afff5a9b0ef3 Mon Sep 17 00:00:00 2001 From: Sanel Zukan Date: Fri, 20 Feb 2009 13:03:38 +0000 Subject: [PATCH] Removing unfinished wm --- edewm/Atoms.cpp | 243 ----- edewm/Atoms.h | 131 --- edewm/COMPLIANCE | 128 --- edewm/Cursor.cpp | 298 ------ edewm/Cursor.h | 70 -- edewm/Desktop.h | 81 -- edewm/Events.cpp | 508 --------- edewm/Events.h | 45 - edewm/Frame.cpp | 1700 ------------------------------ edewm/Frame.h | 344 ------ edewm/Hints.cpp | 512 --------- edewm/Hints.h | 40 - edewm/Jamfile | 18 - edewm/Sound.cpp | 173 --- edewm/Sound.h | 63 -- edewm/Titlebar.cpp | 429 -------- edewm/Titlebar.h | 79 -- edewm/Tracers.h | 42 - edewm/Utils.cpp | 29 - edewm/Utils.h | 20 - edewm/Windowmanager.cpp | 733 ------------- edewm/Windowmanager.h | 165 --- edewm/app.xpm | 21 - edewm/debug.cpp | 62 -- edewm/debug.h | 26 - edewm/locale/fi.po | 89 -- edewm/locale/hu.po | 85 -- edewm/locale/id.po | 89 -- edewm/locale/messages.po.default | 63 -- edewm/locale/messages.pot | 88 -- edewm/locale/ru.po | 90 -- edewm/locale/sk.po | 87 -- edewm/locale/sr.po | 87 -- edewm/main.cpp | 54 - edewm/mask.xpm | 15 - edewm/tests/basic_moveresize.cpp | 95 -- edewm/tests/basic_moveresize.fld | 61 -- edewm/tests/demo.ogg | Bin 413925 -> 0 bytes edewm/tests/sound_test.cpp | 14 - edewm/tests/testpositions.sh | 70 -- 40 files changed, 6947 deletions(-) delete mode 100644 edewm/Atoms.cpp delete mode 100644 edewm/Atoms.h delete mode 100644 edewm/COMPLIANCE delete mode 100644 edewm/Cursor.cpp delete mode 100644 edewm/Cursor.h delete mode 100644 edewm/Desktop.h delete mode 100644 edewm/Events.cpp delete mode 100644 edewm/Events.h delete mode 100644 edewm/Frame.cpp delete mode 100644 edewm/Frame.h delete mode 100644 edewm/Hints.cpp delete mode 100644 edewm/Hints.h delete mode 100644 edewm/Jamfile delete mode 100644 edewm/Sound.cpp delete mode 100644 edewm/Sound.h delete mode 100644 edewm/Titlebar.cpp delete mode 100644 edewm/Titlebar.h delete mode 100644 edewm/Tracers.h delete mode 100644 edewm/Utils.cpp delete mode 100644 edewm/Utils.h delete mode 100644 edewm/Windowmanager.cpp delete mode 100644 edewm/Windowmanager.h delete mode 100644 edewm/app.xpm delete mode 100644 edewm/debug.cpp delete mode 100644 edewm/debug.h delete mode 100644 edewm/locale/fi.po delete mode 100644 edewm/locale/hu.po delete mode 100644 edewm/locale/id.po delete mode 100644 edewm/locale/messages.po.default delete mode 100644 edewm/locale/messages.pot delete mode 100644 edewm/locale/ru.po delete mode 100644 edewm/locale/sk.po delete mode 100644 edewm/locale/sr.po delete mode 100644 edewm/main.cpp delete mode 100644 edewm/mask.xpm delete mode 100644 edewm/tests/basic_moveresize.cpp delete mode 100644 edewm/tests/basic_moveresize.fld delete mode 100644 edewm/tests/demo.ogg delete mode 100644 edewm/tests/sound_test.cpp delete mode 100644 edewm/tests/testpositions.sh diff --git a/edewm/Atoms.cpp b/edewm/Atoms.cpp deleted file mode 100644 index 0cddd8e..0000000 --- a/edewm/Atoms.cpp +++ /dev/null @@ -1,243 +0,0 @@ -/* - * $Id: Atoms.cpp 1700 2006-07-22 18:51:10Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#include "Atoms.h" -#include - -// Icccm atoms -Atom _XA_WM_PROTOCOLS; -Atom _XA_WM_DELETE_WINDOW; -Atom _XA_WM_STATE; -Atom _XA_WM_CHANGE_STATE; -Atom _XA_WM_COLORMAP_WINDOWS; -Atom _XA_WM_TAKE_FOCUS; - -Atom _XA_UTF8_STRING; - -// Motif atoms -Atom _XA_MOTIF_HINTS; - -// Netwm atoms -Atom _XA_NET_SUPPORTED; -Atom _XA_NET_SUPPORTING_WM_CHECK; - -Atom _XA_NET_NUMBER_OF_DESKTOPS; -Atom _XA_NET_DESKTOP_GEOMETRY; -Atom _XA_NET_DESKTOP_VIEWPORT; -Atom _XA_NET_CURRENT_DESKTOP; -Atom _XA_NET_DESKTOP_NAMES; -Atom _XA_NET_ACTIVE_WINDOW; -Atom _XA_NET_WORKAREA; -Atom _XA_NET_SHOWING_DESKTOP; -// other root messages -Atom _XA_NET_CLOSE_WINDOW; -Atom _XA_NET_MOVERESIZE_WINDOW; -Atom _XA_NET_RESTACK_WINDOW; -Atom _XA_NET_REQUEST_FRAME_EXTENTS; - -// application messages -Atom _XA_NET_WM_NAME; -Atom _XA_NET_WM_WINDOW_TYPE; -Atom _XA_NET_WM_WINDOW_TYPE_NORMAL; -Atom _XA_NET_WM_WINDOW_TYPE_DOCK; -Atom _XA_NET_WM_WINDOW_TYPE_TOOLBAR; -Atom _XA_NET_WM_WINDOW_TYPE_MENU; -Atom _XA_NET_WM_WINDOW_TYPE_UTIL; -Atom _XA_NET_WM_WINDOW_TYPE_DIALOG; -Atom _XA_NET_WM_WINDOW_TYPE_SPLASH; -Atom _XA_NET_WM_WINDOW_TYPE_DESKTOP; - -// our messages -Atom _XA_EDE_WM_STARTUP_NOTIFY; -Atom _XA_EDE_WM_APP_STARTING; - -// only for debugging -Atom _XA_NET_VIRTUAL_ROOTS; -Atom _XA_NET_DESKTOP_LAYOUT; -Atom _XA_NET_WM_MOVERESIZE; -Atom _XA_NET_WM_VISIBLE_NAME; -Atom _XA_NET_WM_ICON_NAME; -Atom _XA_NET_WM_ICON_VISIBLE_NAME; -Atom _XA_NET_WM_DESKTOP; -Atom _XA_NET_WM_STATE; -Atom _XA_NET_WM_STATE_MODAL; //Needs transient for (root for whole group) -Atom _XA_NET_WM_STATE_STICKY; //Pos fixed, even if virt. desk. scrolls -Atom _XA_NET_WM_STATE_MAXIMIZED_VERT; -Atom _XA_NET_WM_STATE_MAXIMIZED_HORZ; -Atom _XA_NET_WM_STATE_SHADED; -Atom _XA_NET_WM_STATE_SKIP_TASKBAR; -Atom _XA_NET_WM_STATE_SKIP_PAGER; -Atom _XA_NET_WM_STATE_HIDDEN; -Atom _XA_NET_WM_STATE_FULLSCREEN; -Atom _XA_NET_WM_STATE_ABOVE; -Atom _XA_NET_WM_STATE_BELOW; -Atom _XA_NET_WM_STATE_DEMANDS_ATTENTION; -Atom _XA_NET_WM_ALLOWED_ACTIONS; -Atom _XA_NET_WM_ACTION_MOVE; -Atom _XA_NET_WM_ACTION_RESIZE; -Atom _XA_NET_WM_ACTION_MINIMIZE; -Atom _XA_NET_WM_ACTION_SHADE; -Atom _XA_NET_WM_ACTION_STICK; -Atom _XA_NET_WM_ACTION_MAXIMIZE_HORZ; -Atom _XA_NET_WM_ACTION_MAXIMIZE_VERT; -Atom _XA_NET_WM_ACTION_FULLSCREEN; -Atom _XA_NET_WM_ACTION_CHANGE_DESKTOP; -Atom _XA_NET_WM_ACTION_CLOSE; -Atom _XA_NET_WM_STRUT; -Atom _XA_NET_WM_STRUT_PARTIAL; -Atom _XA_NET_WM_ICON_GEOMETRY; -Atom _XA_NET_WM_ICON; -Atom _XA_NET_WM_PID; -Atom _XA_NET_WM_HANDLED_ICONS; -Atom _XA_NET_WM_USER_TIME; -Atom _XA_NET_FRAME_EXTENTS; -Atom _XA_NET_WM_PING; -Atom _XA_NET_WM_SYNC_REQUEST; -Atom _XA_NET_WM_STATE_STAYS_ON_TOP; -Atom _XA_KWM_WIN_ICON; - - -#ifdef _DEBUG - #define REGISTER_ATOM(id, name) \ - id = XInternAtom(fl_display, name, False);\ - atoms_map[id] = name -#else - #define REGISTER_ATOM(id, name) \ - id = XInternAtom(fl_display, name, False) -#endif - -#define COUNT(x) (sizeof(x)/sizeof(x[0])) - -#ifdef _DEBUG -void InitAtoms(Display* display, std::map& atoms_map) -#else -void InitAtoms(Display* display) -#endif -{ - // Icccm - REGISTER_ATOM(_XA_WM_PROTOCOLS, "WM_PROTOCOLS"); - REGISTER_ATOM(_XA_WM_DELETE_WINDOW, "WM_DELETE_WINDOW"); - REGISTER_ATOM(_XA_WM_STATE, "WM_STATE"); - REGISTER_ATOM(_XA_WM_CHANGE_STATE, "WM_CHANGE_STATE"); - REGISTER_ATOM(_XA_WM_COLORMAP_WINDOWS, "WM_COLORMAP_WINDOWS"); - REGISTER_ATOM(_XA_WM_TAKE_FOCUS, "WM_TAKE_FOCUS"); - - REGISTER_ATOM(_XA_UTF8_STRING, "UTF8_STRING"); - - // Motif - REGISTER_ATOM(_XA_MOTIF_HINTS, "_MOTIF_WM_HINTS"); - - // Netwm - REGISTER_ATOM(_XA_NET_SUPPORTED, "_NET_SUPPORTED"); - REGISTER_ATOM(_XA_NET_SUPPORTING_WM_CHECK, "_NET_SUPPORTING_WM_CHECK"); - REGISTER_ATOM(_XA_NET_NUMBER_OF_DESKTOPS, "_NET_NUMBER_OF_DESKTOPS"); - REGISTER_ATOM(_XA_NET_DESKTOP_GEOMETRY, "_NET_DESKTOP_GEOMETRY"); - REGISTER_ATOM(_XA_NET_DESKTOP_VIEWPORT, "_NET_DESKTOP_VIEWPORT"); - REGISTER_ATOM(_XA_NET_CURRENT_DESKTOP, "_NET_CURRENT_DESKTOP"); - REGISTER_ATOM(_XA_NET_DESKTOP_NAMES, "_NET_DESKTOP_NAMES"); - REGISTER_ATOM(_XA_NET_ACTIVE_WINDOW, "_NET_ACTIVE_WINDOW"); - REGISTER_ATOM(_XA_NET_WORKAREA, "_NET_WORKAREA"); - REGISTER_ATOM(_XA_NET_SHOWING_DESKTOP, "_NET_SHOWING_DESKTOP"); - - // other root messages - REGISTER_ATOM(_XA_NET_CLOSE_WINDOW, "_NET_CLOSE_WINDOW"); - REGISTER_ATOM(_XA_NET_MOVERESIZE_WINDOW, "_NET_MOVERESIZE_WINDOW"); - REGISTER_ATOM(_XA_NET_RESTACK_WINDOW, "_NET_RESTACK_WINDOW"); - REGISTER_ATOM(_XA_NET_REQUEST_FRAME_EXTENTS, "_NET_REQUEST_FRAME_EXTENTS"); - - REGISTER_ATOM(_XA_NET_WM_NAME, "_NET_WM_NAME"); - REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE, "_NET_WM_WINDOW_TYPE"); - REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_NORMAL, "_NET_WM_WINDOW_TYPE_NORMAL"); - REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_DOCK, "_NET_WM_WINDOW_TYPE_DOCK"); - REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_TOOLBAR, "_NET_WM_WINDOW_TYPE_TOOLBAR"); - REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_MENU, "_NET_WM_WINDOW_TYPE_MENU"); - REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_UTIL, "_NET_WM_WINDOW_TYPE_UTIL"); - REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_DIALOG, "_NET_WM_WINDOW_TYPE_DIALOG"); - REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_DIALOG, "_NET_WM_WINDOW_TYPE_SPLASH"); - REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_DESKTOP, "_NET_WM_WINDOW_TYPE_DESKTOP"); - - // window messages - REGISTER_ATOM(_XA_NET_WM_STATE, "_NET_WM_STATE"); - REGISTER_ATOM(_XA_NET_WM_STATE_MAXIMIZED_VERT,"_NET_WM_STATE_MAXIMIZED_VERT"); - REGISTER_ATOM(_XA_NET_WM_STATE_MAXIMIZED_HORZ,"_NET_WM_STATE_MAXIMIZED_HORZ"); - REGISTER_ATOM(_XA_NET_WM_STATE_SHADED, "_NET_WM_STATE_SHADED"); - REGISTER_ATOM(_XA_NET_WM_STATE_ABOVE, "_NET_WM_STATE_ABOVE"); - REGISTER_ATOM(_XA_NET_WM_STATE_BELOW, "_NET_WM_STATE_BELOW"); - - // our messages - REGISTER_ATOM(_XA_EDE_WM_STARTUP_NOTIFY, "_EDE_WM_STARTUP_NOTIFY"); - REGISTER_ATOM(_XA_EDE_WM_APP_STARTING, "_EDE_WM_APP_STARTING"); - - // debugging stuff (aka. not implemented) - REGISTER_ATOM(_XA_NET_VIRTUAL_ROOTS, "_NET_VIRTUAL_ROOTS"); - REGISTER_ATOM(_XA_NET_DESKTOP_LAYOUT, "_NET_DESKTOP_LAYOUT"); - REGISTER_ATOM(_XA_NET_WM_MOVERESIZE, "_NET_WM_MOVERESIZE"); - REGISTER_ATOM(_XA_NET_WM_VISIBLE_NAME, "_NET_WM_VISIBLE_NAME"); - REGISTER_ATOM(_XA_NET_WM_ICON_NAME, "_NET_WM_ICON_NAME"); - REGISTER_ATOM(_XA_NET_WM_ICON_VISIBLE_NAME, "_NET_WM_ICON_VISIBLE_NAME"); - REGISTER_ATOM(_XA_NET_WM_DESKTOP, "_NET_WM_DESKTOP"); - REGISTER_ATOM(_XA_NET_WM_STATE_MODAL, "_NET_WM_STATE_MODAL"); - REGISTER_ATOM(_XA_NET_WM_STATE_STICKY, "_NET_WM_STATE_STICKY"); - REGISTER_ATOM(_XA_NET_WM_STATE_SKIP_TASKBAR, "_NET_WM_STATE_SKIP_TASKBAR"); - REGISTER_ATOM(_XA_NET_WM_STATE_SKIP_PAGER, "_NET_WM_STATE_SKIP_PAGER"); - REGISTER_ATOM(_XA_NET_WM_STATE_HIDDEN, "_NET_WM_STATE_HIDDEN"); - REGISTER_ATOM(_XA_NET_WM_STATE_FULLSCREEN, "_NET_WM_STATE_FULLSCREEN"); - REGISTER_ATOM(_XA_NET_WM_STATE_DEMANDS_ATTENTION, "_NET_WM_STATE_DEMANDS_ATTENTION"); - REGISTER_ATOM(_XA_NET_WM_ALLOWED_ACTIONS, "_NET_WM_ALLOWED_ACTIONS"); - REGISTER_ATOM(_XA_NET_WM_ACTION_MOVE, "_NET_WM_ACTION_MOVE"); - REGISTER_ATOM(_XA_NET_WM_ACTION_RESIZE, "_NET_WM_ACTION_RESIZE"); - REGISTER_ATOM(_XA_NET_WM_ACTION_MINIMIZE, "_NET_WM_ACTION_MINIMIZE"); - REGISTER_ATOM(_XA_NET_WM_ACTION_SHADE, "_NET_WM_ACTION_SHADE"); - REGISTER_ATOM(_XA_NET_WM_ACTION_STICK, "_NET_WM_ACTION_STICK"); - REGISTER_ATOM(_XA_NET_WM_ACTION_MAXIMIZE_HORZ,"_NET_WM_ACTION_MAXIMIZE_HORZ"); - REGISTER_ATOM(_XA_NET_WM_ACTION_MAXIMIZE_VERT,"_NET_WM_ACTION_MAXIMIZE_VERT"); - REGISTER_ATOM(_XA_NET_WM_ACTION_FULLSCREEN, "_NET_WM_ACTION_FULLSCREEN"); - REGISTER_ATOM(_XA_NET_WM_ACTION_CHANGE_DESKTOP,"_NET_WM_ACTION_CHANGE_DESKTOP"); - REGISTER_ATOM(_XA_NET_WM_ACTION_CLOSE, "_NET_WM_ACTION_CLOSE"); - REGISTER_ATOM(_XA_NET_WM_STRUT, "_NET_WM_STRUT"); - REGISTER_ATOM(_XA_NET_WM_STRUT_PARTIAL, "_NET_WM_STRUT_PARTIAL"); - REGISTER_ATOM(_XA_NET_WM_ICON_GEOMETRY, "_NET_WM_ICON_GEOMETRY"); - REGISTER_ATOM(_XA_NET_WM_ICON, "_NET_WM_ICON"); - REGISTER_ATOM(_XA_NET_WM_PID, "_NET_WM_PID"); - REGISTER_ATOM(_XA_NET_WM_HANDLED_ICONS, "_NET_WM_HANDLED_ICONS"); - REGISTER_ATOM(_XA_NET_WM_USER_TIME, "_NET_WM_USER_TIME"); - REGISTER_ATOM(_XA_NET_FRAME_EXTENTS, "_NET_FRAME_EXTENTS"); - REGISTER_ATOM(_XA_NET_WM_PING, "_NET_WM_PING"); - REGISTER_ATOM(_XA_NET_WM_SYNC_REQUEST, "_NET_WM_SYNC_REQUEST"); - REGISTER_ATOM(_XA_NET_WM_STATE_STAYS_ON_TOP, "_NET_WM_STATE_STAYS_ON_TOP"); - REGISTER_ATOM(_XA_KWM_WIN_ICON, "_KWM_WIN_ICON"); -} - -// these are list of current implemented atoms -void SetSupported(Window root) -{ - Atom atoms[] = - { - _XA_NET_SUPPORTED, - _XA_NET_SUPPORTING_WM_CHECK, - - _XA_NET_WM_NAME, - _XA_NET_WM_WINDOW_TYPE, - _XA_NET_WM_WINDOW_TYPE_NORMAL, - _XA_NET_WM_WINDOW_TYPE_DOCK, - _XA_NET_WM_WINDOW_TYPE_TOOLBAR, - _XA_NET_WM_WINDOW_TYPE_MENU, - _XA_NET_WM_WINDOW_TYPE_UTIL, - _XA_NET_WM_WINDOW_TYPE_DIALOG, - _XA_NET_WM_WINDOW_TYPE_SPLASH, - _XA_NET_WM_WINDOW_TYPE_DESKTOP - }; - - XChangeProperty(fl_display, root, _XA_NET_SUPPORTED, XA_ATOM, 32, PropModeReplace, - (unsigned char*)atoms, COUNT(atoms)); -} - diff --git a/edewm/Atoms.h b/edewm/Atoms.h deleted file mode 100644 index b37ce79..0000000 --- a/edewm/Atoms.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * $Id: Atoms.h 1700 2006-07-22 18:51:10Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef __ATOMS_H__ -#define __ATOMS_H__ - -#ifdef _DEBUG -#include -#endif - -#include - -// Icccm atoms -extern Atom _XA_WM_PROTOCOLS; -extern Atom _XA_WM_DELETE_WINDOW; -extern Atom _XA_WM_STATE; -extern Atom _XA_WM_CHANGE_STATE; -extern Atom _XA_WM_COLORMAP_WINDOWS; -extern Atom _XA_WM_TAKE_FOCUS; - -extern Atom _XA_UTF8_STRING; - -// Motif atoms -extern Atom _XA_MOTIF_HINTS; - -// Netwm atoms -// root messages -extern Atom _XA_NET_SUPPORTED; -extern Atom _XA_NET_SUPPORTING_WM_CHECK; -extern Atom _XA_NET_NUMBER_OF_DESKTOPS; -extern Atom _XA_NET_DESKTOP_GEOMETRY; -extern Atom _XA_NET_DESKTOP_VIEWPORT; -extern Atom _XA_NET_CURRENT_DESKTOP; -extern Atom _XA_NET_DESKTOP_NAMES; -extern Atom _XA_NET_ACTIVE_WINDOW; -extern Atom _XA_NET_WORKAREA; -extern Atom _XA_NET_SHOWING_DESKTOP; -// other root messages -extern Atom _XA_NET_CLOSE_WINDOW; -extern Atom _XA_NET_MOVERESIZE_WINDOW; -extern Atom _XA_NET_RESTACK_WINDOW; -extern Atom _XA_NET_REQUEST_FRAME_EXTENTS; - -// application messages -extern Atom _XA_NET_WM_NAME; -extern Atom _XA_NET_WM_WINDOW_TYPE; - extern Atom _XA_NET_WM_WINDOW_TYPE_NORMAL; - extern Atom _XA_NET_WM_WINDOW_TYPE_DOCK; - extern Atom _XA_NET_WM_WINDOW_TYPE_TOOLBAR; - extern Atom _XA_NET_WM_WINDOW_TYPE_MENU; - extern Atom _XA_NET_WM_WINDOW_TYPE_UTIL; - extern Atom _XA_NET_WM_WINDOW_TYPE_DIALOG; - extern Atom _XA_NET_WM_WINDOW_TYPE_SPLASH; - extern Atom _XA_NET_WM_WINDOW_TYPE_DESKTOP; - -extern Atom _XA_NET_WM_STATE_SHADED; -extern Atom _XA_NET_WM_STATE_MAXIMIZED_VERT; -extern Atom _XA_NET_WM_STATE_MAXIMIZED_HORZ; -extern Atom _XA_NET_WM_STATE_ABOVE; -extern Atom _XA_NET_WM_STATE_BELOW; - -// how to apply above states -#define _NET_WM_STATE_REMOVE 0 // remove/unset property -#define _NET_WM_STATE_ADD 1 // add/set property -#define _NET_WM_STATE_TOGGLE 2 // toggle property - -// our messages -extern Atom _XA_EDE_WM_STARTUP_NOTIFY; - extern Atom _XA_EDE_WM_APP_STARTING; - -// atoms for debugging (not implemented) -extern Atom _XA_NET_VIRTUAL_ROOTS; -extern Atom _XA_NET_DESKTOP_LAYOUT; -extern Atom _XA_NET_WM_MOVERESIZE; -extern Atom _XA_NET_RESTACK_WINDOW; -extern Atom _XA_NET_REQUEST_FRAME_EXTENTS; -extern Atom _XA_NET_WM_NAME; -extern Atom _XA_NET_WM_VISIBLE_NAME; -extern Atom _XA_NET_WM_ICON_NAME; -extern Atom _XA_NET_WM_ICON_VISIBLE_NAME; -extern Atom _XA_NET_WM_DESKTOP; -extern Atom _XA_NET_WM_STATE; -extern Atom _XA_NET_WM_STATE_MODAL; //Needs transient for (root for whole group) -extern Atom _XA_NET_WM_STATE_STICKY; //Pos fixed, even if virt. desk. scrolls -extern Atom _XA_NET_WM_STATE_SKIP_TASKBAR; -extern Atom _XA_NET_WM_STATE_SKIP_PAGER; -extern Atom _XA_NET_WM_STATE_HIDDEN; -extern Atom _XA_NET_WM_STATE_FULLSCREEN; -extern Atom _XA_NET_WM_STATE_DEMANDS_ATTENTION; - -extern Atom _XA_NET_WM_ALLOWED_ACTIONS; -extern Atom _XA_NET_WM_ACTION_MOVE; -extern Atom _XA_NET_WM_ACTION_RESIZE; -extern Atom _XA_NET_WM_ACTION_MINIMIZE; -extern Atom _XA_NET_WM_ACTION_SHADE; -extern Atom _XA_NET_WM_ACTION_STICK; -extern Atom _XA_NET_WM_ACTION_MAXIMIZE_HORZ; -extern Atom _XA_NET_WM_ACTION_MAXIMIZE_VERT; -extern Atom _XA_NET_WM_ACTION_FULLSCREEN; -extern Atom _XA_NET_WM_ACTION_CHANGE_DESKTOP; -extern Atom _XA_NET_WM_ACTION_CLOSE; -extern Atom _XA_NET_WM_STRUT; -extern Atom _XA_NET_WM_STRUT_PARTIAL; -extern Atom _XA_NET_WM_ICON_GEOMETRY; -extern Atom _XA_NET_WM_ICON; -extern Atom _XA_NET_WM_PID; -extern Atom _XA_NET_WM_HANDLED_ICONS; -extern Atom _XA_NET_WM_USER_TIME; -extern Atom _XA_NET_FRAME_EXTENTS; -extern Atom _XA_NET_WM_PING; -extern Atom _XA_NET_WM_SYNC_REQUEST; -extern Atom _XA_NET_WM_STATE_STAYS_ON_TOP; -extern Atom _XA_KWM_WIN_ICON; - -#ifdef _DEBUG - void InitAtoms(Display* display, std::map& atoms_map); -#else - void InitAtoms(Display* display); -#endif -void SetSupported(Window root); - -#endif // __ATOMS_H__ diff --git a/edewm/COMPLIANCE b/edewm/COMPLIANCE deleted file mode 100644 index 2d4e4c4..0000000 --- a/edewm/COMPLIANCE +++ /dev/null @@ -1,128 +0,0 @@ -$Id: COMPLIANCE 1688 2006-07-19 12:01:58Z karijes $ - -Edewm standards compliance -========================== - -Map: ----- - (?): pending for implementation - (+): implemented - (/): partially implemented - (x): listed in _NET_SUPPORTED, but not implemented - (-): probably will not be implemented - -Netwm compliance (http://freedesktop.org/Standards/wm-spec/) -============================================================ - -Root window ------------ - -(+) _NET_SUPPORTED, -(x) _NET_SUPPORTING_WM_CHECK -(?) _NET_CLIENT_LIST -(?) _NET_CLIENT_LIST_STACKING -(?) _NET_NUMBER_OF_DESKTOPS -(?) _NET_DESKTOP_GEOMETRY -(?) _NET_DESKTOP_VIEWPORT -(?) _NET_CURRENT_DESKTOP -(?) _NET_DESKTOP_NAMES -(?) _NET_ACTIVE_WINDOW -(?) _NET_WORKAREA -(?) _NET_SUPPORTING_WM_CHECK -(-) _NET_VIRTUAL_ROOTS -(?) _NET_DESKTOP_LAYOUT -(?) _NET_SHOWING_DESKTOP -(?) _NET_CLOSE_WINDOW -(?) _NET_MOVERESIZE_WINDOW -(?) _NET_WM_MOVERESIZE - -Application window ------------------- - -(x) _NET_WM_NAME -(/) _NET_WM_WINDOW_TYPE - (+) _NET_WM_WINDOW_TYPE_NORMAL - (?) _NET_WM_WINDOW_TYPE_DOCK - (+) _NET_WM_WINDOW_TYPE_TOOLBAR - (+) _NET_WM_WINDOW_TYPE_MENU - (?) _NET_WM_WINDOW_TYPE_UTIL - (?) _NET_WM_WINDOW_TYPE_DIALOG - (+) _NET_WM_WINDOW_TYPE_SPLASH - (?) _NET_WM_WINDOW_TYPE_DESKTOP - -(/) _NET_WM_STATE - (?) _NET_WM_STATE_MODAL - (?) _NET_WM_STATE_STICKY - (/) _NET_WM_STATE_MAXIMIZED_VERT - (/) _NET_WM_STATE_MAXIMIZED_HORZ - (+) _NET_WM_STATE_SHADED - (?) _NET_WM_STATE_SKIP_TASKBAR - (?) _NET_WM_STATE_SKIP_PAGER - (?) _NET_WM_STATE_HIDDEN - (?) _NET_WM_STATE_FULLSCREEN - (?) _NET_WM_STATE_ABOVE - (?) _NET_WM_STATE_BELOW - -(-) _NET_WM_ALLOWED_ACTIONS - Although in edewm there is facility for easier implementing - this message, I am not quite sure where will be used. - -(?) _NET_WM_STRUT -(?) _NET_WM_STRUT_PARTIAL -(?) _NET_WM_ICON_GEOMETRY -(?) _NET_WM_ICON - -(-) _NET_WM_PID - Probably later will be implemented. For now it is not needed - at all. - -(-) _NET_WM_HANDLED_ICONS -(?) _NET_WM_USER_TIME - - -Icccm compliance -================ - -Version 2.0 is used as guide. - -Note: in WM_NORMAL_HINTS, win_gravitiy is ignored since edewm always -assume and use NorthWestGravity. This will be changed. - - -Other -===== - -Motif ------ - -(/) _MOTIF_HINTS - This hint is, as I can see, very standardized now, but implementations - differ. Edewm use only decor data from it, since based on decor, allowed - actions are deduced. - -KDE ---- -(?) _KWM_WIN_ICON - Previous edewm version loaded this message, but not used. Probably - will be implemented for history reasons (hm...) - -GNOME ------ -(-) None of them, since no one requested it. - - -Ambiguities -=========== -If ambiguities arise between similar hints, Netwm is preferred. Then -comes Icccm and Other. - - -Notes -===== -This document will be tried to be up to date with package. If you notice some -omissions, please mail me at [karijes at users.sf.net]. - -Important: since standard's documentation is very sparse (nothing unusual) and -possibility for bad/wrong interpretation of some parts exists, your notice about -them (or different behaviors among other window managers) will be much appreciated. -Mail is above. diff --git a/edewm/Cursor.cpp b/edewm/Cursor.cpp deleted file mode 100644 index 733f8ac..0000000 --- a/edewm/Cursor.cpp +++ /dev/null @@ -1,298 +0,0 @@ -/* - * $Id: Cursor.cpp 1700 2006-07-22 18:51:10Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#include "Cursor.h" -#include "Frame.h" -#include "Tracers.h" - -#include -#include - -#include - -#ifdef _DEBUG - #include - std::map cursors_map; -#endif - -/* Windows like cursors (copied from FLTK). - * These are cursors for some shapes (given in comments). For others, default X are used. - */ -#define CURSORSIZE 16 -#define HOTXY 8 -static struct TableEntry { - uchar bits[CURSORSIZE*CURSORSIZE/8]; - uchar mask[CURSORSIZE*CURSORSIZE/8]; - Cursor cursor; -} table[] = { - {{ // FL_CURSOR_NS - 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0x80, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00}, - { - 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f, 0xc0, 0x03, - 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, - 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01}}, - {{ // FL_CURSOR_EW - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, - 0x0c, 0x30, 0xfe, 0x7f, 0xfe, 0x7f, 0x0c, 0x30, 0x08, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x1c, 0x38, - 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, - {{ // FL_CURSOR_NWSE - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x38, 0x00, 0x78, 0x00, - 0xe8, 0x00, 0xc0, 0x01, 0x80, 0x03, 0x00, 0x17, 0x00, 0x1e, 0x00, 0x1c, - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - { - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x7c, 0x00, 0xfc, 0x00, - 0xfc, 0x01, 0xec, 0x03, 0xc0, 0x37, 0x80, 0x3f, 0x00, 0x3f, 0x00, 0x3e, - 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00}}, - {{ // FL_CURSOR_NESW - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1e, - 0x00, 0x17, 0x80, 0x03, 0xc0, 0x01, 0xe8, 0x00, 0x78, 0x00, 0x38, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x3f, - 0x80, 0x3f, 0xc0, 0x37, 0xec, 0x03, 0xfc, 0x01, 0xfc, 0x00, 0x7c, 0x00, - 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00}}, - {{0}, {0}} // FL_CURSOR_NONE & unknown -}; - -// Mozilla-like busy cursor -#define LAWATCH_WIDTH 32 -#define LAWATCH_HEIGHT 32 -#define LAWATCH_HOTXY 2 -const char left_arrow_watch_bits [] = -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, - 0xfc, 0x3b, 0x00, 0x00, 0x7c, 0x38, 0x00, 0x00, 0x6c, 0x54, 0x00, 0x00, - 0xc4, 0xdc, 0x00, 0x00, 0xc0, 0x44, 0x00, 0x00, 0x80, 0x39, 0x00, 0x00, - 0x80, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -const char left_arrow_watch_mask [] = -{ - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x3b, 0x00, 0x00, - 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, - 0xee, 0xff, 0x01, 0x00, 0xe4, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, - 0xc0, 0x7f, 0x00, 0x00, 0x80, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -Cursor CreateLeftArrowWatch(void) -{ - XColor dummy; - Pixmap p = XCreateBitmapFromData(fl_display, RootWindow(fl_display, fl_screen), - left_arrow_watch_bits, LAWATCH_WIDTH, LAWATCH_HEIGHT); - Pixmap m = XCreateBitmapFromData(fl_display, RootWindow(fl_display, fl_screen), - left_arrow_watch_mask, LAWATCH_WIDTH, LAWATCH_HEIGHT); - - Cursor cursor = XCreatePixmapCursor(fl_display, p, m, &dummy, &dummy, LAWATCH_HOTXY, LAWATCH_HOTXY); - - // recolor created cursor to usefull colors - XColor fgc; - Fl_Color fg = fl_get_color(FL_BLACK); - fgc.red = (fg>>16)&0xFF00; - fgc.green = (fg>>8)&0xFF00; - fgc.blue = fg & 0xFF00; - - XColor bgc; - Fl_Color bg = fl_get_color(FL_WHITE); - bgc.red = (bg>>16)&0xFF00; - bgc.green = (bg>>8)&0xFF00; - bgc.blue = bg & 0xFF00; - XRecolorCursor(fl_display, cursor, &fgc, &bgc); - - return cursor; -} - -Cursor CreateFltkCursor(Fl_Cursor c) -{ - Cursor cursor; - if(!c) - return None; - - if(c >= FL_CURSOR_NS) - { - TableEntry* q = (c > FL_CURSOR_NESW) ? table+4 : table+(c-FL_CURSOR_NS); - if(!(q->cursor)) - { - XColor dummy; - Pixmap p = XCreateBitmapFromData(fl_display, RootWindow(fl_display, fl_screen), (const char*)q->bits, - CURSORSIZE, CURSORSIZE); - Pixmap m = XCreateBitmapFromData(fl_display, RootWindow(fl_display, fl_screen), (const char*)q->mask, - CURSORSIZE, CURSORSIZE); - q->cursor = XCreatePixmapCursor(fl_display, p, m, &dummy, &dummy, HOTXY, HOTXY); - - XFreePixmap(fl_display, m); - XFreePixmap(fl_display, p); - } - cursor = q->cursor; - } - else - cursor = XCreateFontCursor(fl_display, (c-1)*2); - - // recolor created cursor to usefull colors - XColor fgc; - Fl_Color fg = fl_get_color(FL_BLACK); - fgc.red = (fg>>16)&0xFF00; - fgc.green = (fg>>8)&0xFF00; - fgc.blue = fg & 0xFF00; - - XColor bgc; - Fl_Color bg = fl_get_color(FL_WHITE); - bgc.red = (bg>>16)&0xFF00; - bgc.green = (bg>>8)&0xFF00; - bgc.blue = bg & 0xFF00; - XRecolorCursor(fl_display, cursor, &fgc, &bgc); - - return cursor; -} - -CursorHandler::CursorHandler() -{ - cursors_loaded = false; - - /* In some cases curr_cursor_type can't be set - * fast enough (mostly for Frame::grab_cursor()) which - * will crash whole wm. This will prevent that. - */ - curr_cursor_type = CURSOR_DEFAULT; -} - -CursorHandler::~CursorHandler() -{ - if(st != X_CURSORS) - return; - - for(int i = 0; i < CURSOR_LIST_SIZE; i++) - XFreeCursor(fl_display, cursors[i]); -} - -void CursorHandler::load(CursorShapeType s) -{ - TRACE_FUNCTION("void CursorHandler::load(CursorShapeType s)"); - - st = s; - if(st == FLTK_CURSORS) - { - cursors[CURSOR_DEFAULT] = CreateFltkCursor(FL_CURSOR_ARROW); - cursors[CURSOR_MOVE] = CreateFltkCursor(FL_CURSOR_MOVE); - - //cursors[CURSOR_WAIT] = CreateFltkCursor(FL_CURSOR_WAIT); - cursors[CURSOR_WAIT] = CreateLeftArrowWatch(); - - cursors[CURSOR_HELP] = CreateFltkCursor(FL_CURSOR_HELP); - cursors[CURSOR_N] = CreateFltkCursor(FL_CURSOR_NS); - cursors[CURSOR_NE] = CreateFltkCursor(FL_CURSOR_NESW); - cursors[CURSOR_E] = CreateFltkCursor(FL_CURSOR_WE); - cursors[CURSOR_SE] = CreateFltkCursor(FL_CURSOR_NWSE); - cursors[CURSOR_S] = CreateFltkCursor(FL_CURSOR_NS); - cursors[CURSOR_SW] = CreateFltkCursor(FL_CURSOR_NESW); - cursors[CURSOR_W] = CreateFltkCursor(FL_CURSOR_WE); - cursors[CURSOR_NW] = CreateFltkCursor(FL_CURSOR_NWSE); - } - else - { - cursors[CURSOR_DEFAULT] = XCreateFontCursor(fl_display, XC_left_ptr); - cursors[CURSOR_MOVE] = XCreateFontCursor(fl_display, XC_fleur); - - //cursors[CURSOR_WAIT] = XCreateFontCursor(fl_display, XC_watch); - cursors[CURSOR_WAIT] = CreateLeftArrowWatch(); - - cursors[CURSOR_HELP] = XCreateFontCursor(fl_display, XC_question_arrow); - cursors[CURSOR_N] = XCreateFontCursor(fl_display, XC_top_side); - cursors[CURSOR_NE] = XCreateFontCursor(fl_display, XC_top_right_corner); - cursors[CURSOR_E] = XCreateFontCursor(fl_display, XC_right_side); - cursors[CURSOR_SE] = XCreateFontCursor(fl_display, XC_bottom_right_corner); - cursors[CURSOR_S] = XCreateFontCursor(fl_display, XC_bottom_side); - cursors[CURSOR_SW] = XCreateFontCursor(fl_display, XC_bottom_left_corner); - cursors[CURSOR_W] = XCreateFontCursor(fl_display, XC_left_side); - cursors[CURSOR_NW] = XCreateFontCursor(fl_display, XC_top_left_corner); - } - -#ifdef _DEBUG - cursors_map[CURSOR_DEFAULT] = "CURSOR_DEFAULT"; - cursors_map[CURSOR_MOVE] = "CURSOR_MOVE"; - cursors_map[CURSOR_WAIT] = "CURSOR_WAIT"; - cursors_map[CURSOR_HELP] = "CURSOR_HELP"; - cursors_map[CURSOR_N] = "CURSOR_N"; - cursors_map[CURSOR_NE] = "CURSOR_NE"; - cursors_map[CURSOR_E] = "CURSOR_E"; - cursors_map[CURSOR_SE] = "CURSOR_SE"; - cursors_map[CURSOR_S] = "CURSOR_S"; - cursors_map[CURSOR_SW] = "CURSOR_SW"; - cursors_map[CURSOR_W] = "CURSOR_W"; - cursors_map[CURSOR_NW] = "CURSOR_NW"; -#endif - - cursors_loaded = true; -} - -void CursorHandler::set_cursor(Frame* f, CursorType t) -{ - TRACE_FUNCTION("void CursorHandler::set_cursor(Frame* f, CursorType t)"); -#ifdef _DEBUG - ELOG("Cursor set to %s", cursors_map[t]); -#endif - assert(cursors_loaded != false); - assert(f != NULL); - - // do not set cursor to same type again - if(t == curr_cursor_type) - return; - - curr_cursor_type = t; - - XDefineCursor(fl_display, fl_xid(f), cursors[curr_cursor_type]); -} - -// only for root window -void CursorHandler::set_root_cursor(void) -{ - TRACE_FUNCTION("void CursorHandler::set_root_cursor(void)"); - assert(cursors_loaded != false); - - root_window_cursor = cursors[CURSOR_DEFAULT]; - XDefineCursor(fl_display, RootWindow(fl_display, fl_screen), root_window_cursor); -} - -void CursorHandler::set_root_cursor(CursorType t) -{ - TRACE_FUNCTION("void CursorHandler::set_root_cursor(CursorType t)"); - assert(cursors_loaded != false); - - root_window_cursor = cursors[t]; - XDefineCursor(fl_display, RootWindow(fl_display, fl_screen), root_window_cursor); -} - -Cursor CursorHandler::current_cursor(void) const -{ - TRACE_FUNCTION("Cursor CursorHandler::current_cursor(void) const"); - //assert(current_cursor > 0 && current_cursor < CURSOR_LIST_SIZE); - return cursors[curr_cursor_type]; -} diff --git a/edewm/Cursor.h b/edewm/Cursor.h deleted file mode 100644 index a393e18..0000000 --- a/edewm/Cursor.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * $Id: Cursor.h 1700 2006-07-22 18:51:10Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef __CURSOR_H__ -#define __CURSOR_H__ - -#include // Cursor - -/* Main existance of this class is - * to allow using efltk and X cursors - * (...and maybe bitmapped ones :). - */ - -enum CursorType -{ - CURSOR_DEFAULT = 0, - CURSOR_MOVE, - CURSOR_WAIT, - CURSOR_HELP, - CURSOR_N, - CURSOR_NE, - CURSOR_E, - CURSOR_SE, - CURSOR_S, - CURSOR_SW, - CURSOR_W, - CURSOR_NW, - CURSOR_NONE -}; - -#define CURSOR_LIST_SIZE 13 - -enum CursorShapeType -{ - FLTK_CURSORS = 0, - X_CURSORS -}; - -class Frame; - -class CursorHandler -{ - private: - int cursors[CURSOR_LIST_SIZE]; - CursorShapeType st; - CursorType curr_cursor_type; - Cursor root_window_cursor; - bool locked; - bool cursors_loaded; - public: - CursorHandler(); - ~CursorHandler(); - void load(CursorShapeType s); - void set_cursor(Frame* f, CursorType t); - void set_root_cursor(void); - void set_root_cursor(CursorType t); - Cursor current_cursor(void) const; - Cursor root_cursor(void) { return root_window_cursor; } - CursorShapeType cursor_shape_type(void) { return st; } -}; -#endif diff --git a/edewm/Desktop.h b/edewm/Desktop.h deleted file mode 100644 index 097c744..0000000 --- a/edewm/Desktop.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * $Id: Desktop.h 1653 2006-06-09 13:08:58Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef _DESKTOP_H_ -#define _DESKTOP_H_ - -#include - -class Desktop { -public: - Desktop(const char *name); - ~Desktop(); - - const char* name() const { return name_; } - void name(const char *name); - int number() const { return number_; } - - static Desktop *desktop(int num); - - static Desktop *next(); - static Desktop *prev(); - - static Desktop *current() { return current_; } - static int current_num() { return current_ ? current_->number() : -1; } - - static Desktop* add(const char *name=0); - - static void current(Desktop *cur); - static void current(int cur) { current(desktop(cur)); } - - static int desktop_count() { return desktop_count_; } - - static void update_desktop_viewport(); - static void update_desktop_workarea(); - static void update_desktop_geometry(); - - static void update_desktop_count(uint cnt, bool send=true); - static void update_desktop_names(bool send=true); - - static void set_names(); - - int junk; // for temporary storage by menu builder - -private: - static Desktop* current_; - static int desktop_count_; - - const char* name_; - int number_; -}; - -class Desktop_List : public Fl_Ptr_List { -public: - Desktop_List() : Fl_Ptr_List() { } - - void append(Desktop *item) { Fl_Ptr_List::append((void *)item); } - void prepend(Desktop *item) { Fl_Ptr_List::prepend((void *)item); } - void insert(uint pos, Desktop *item) { Fl_Ptr_List::insert(pos, (void *)item); } - void replace(uint pos, Desktop *item) { Fl_Ptr_List::replace(pos, (void *)item); } - void remove(uint pos) { Fl_Ptr_List::remove(pos); } - bool remove(Desktop *item) { return Fl_Ptr_List::remove((void *)item); } - int index_of(const Desktop *w) const { return Fl_Ptr_List::index_of((void*)w); } - Desktop *item(uint index) const { return (Desktop*)Fl_Ptr_List::item(index); } - - Desktop **data() { return (Desktop**)items; } - - Desktop *operator [](uint ind) const { return (Desktop *)items[ind]; } -}; - -extern Desktop_List desktops; - -#endif diff --git a/edewm/Events.cpp b/edewm/Events.cpp deleted file mode 100644 index e7add63..0000000 --- a/edewm/Events.cpp +++ /dev/null @@ -1,508 +0,0 @@ -/* - * $Id: Events.cpp 1712 2006-07-25 10:04:41Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#include "Events.h" -#include "Frame.h" -#include "Titlebar.h" -#include "Windowmanager.h" -#include "Tracers.h" -#include "Atoms.h" -#include "Hints.h" -#include "Cursor.h" -#include "debug.h" - -#include - - -#define FRAME_NAME(frame) (frame->label ? frame->label : "NULL") - -FrameEventHandler::FrameEventHandler(Frame* f) : curr_frame(f) -{ - assert(curr_frame != NULL); -} - -FrameEventHandler::~FrameEventHandler() -{ -} - -/* Handle efltk events. - * Some events like FL_FOCUS and FL_UNFOCUS are not handled, since - * efltk does not receive this event when when should (for example: - * one window is focused, but other shoud be automatically unfocused). - * X on ther hand send FocusIn and FocusOut when above events ocurr. - */ -int FrameEventHandler::handle_fltk(int event) -{ - long gggg; - static long bbbb; - static CursorType ctype; - - if(curr_frame->show_titlebar) - { - Titlebar* tbar = curr_frame->titlebar; - assert(tbar != NULL); - - if(!curr_frame->resizing()) - { - if(Fl::event_inside(tbar->x(), tbar->y(), tbar->w(), tbar->h()) || curr_frame->moving()) - return tbar->handle(event); - } - } - - switch(event) - { - case FL_SHOW: - case FL_HIDE: - return 0; - - case FL_ENTER: - ELOG("FrameEventHandler: FL_ENTER"); - return 1; - - case FL_LEAVE: - ELOG("FrameEventHandler: FL_LEAVE"); - return 1; - - case FL_MOVE: - { - // note, I am using coordinates _inside_ window - gggg = curr_frame->resize_type(Fl::event_x(), Fl::event_y()); - switch(gggg) - { - case ResizeTypeUpLeft: - ELOG("FrameEventHandler (resizing): ResizeTypeUpLeft"); - curr_frame->set_cursor(CURSOR_NW); - ctype = CURSOR_NW; - bbbb = ResizeTypeUpLeft; - return 1; - case ResizeTypeUpRight: - ELOG("FrameEventHandler (resizing): ResizeTypeUpRight"); - curr_frame->set_cursor(CURSOR_NE); - ctype = CURSOR_NE; - bbbb = ResizeTypeUpRight; - return 1; - case ResizeTypeDownLeft: - ELOG("FrameEventHandler (resizing): ResizeTypeDownLeft"); - curr_frame->set_cursor(CURSOR_SW); - ctype = CURSOR_SW; - bbbb = ResizeTypeDownLeft; - return 1; - case ResizeTypeDownRight: - ELOG("FrameEventHandler (resizing): ResizeTypeDownRight"); - curr_frame->set_cursor(CURSOR_SE); - ctype = CURSOR_SE; - bbbb = ResizeTypeDownRight; - return 1; - case ResizeTypeUp: - ELOG("FrameEventHandler (resizing): ResizeTypeUp"); - curr_frame->set_cursor(CURSOR_N); - ctype = CURSOR_N; - bbbb = ResizeTypeUp; - return 1; - case ResizeTypeLeft: - ELOG("FrameEventHandler (resizing): ResizeTypeLeft"); - curr_frame->set_cursor(CURSOR_W); - ctype = CURSOR_W; - bbbb = ResizeTypeLeft; - return 1; - case ResizeTypeRight: - ELOG("FrameEventHandler (resizing): ResizeTypeRight"); - curr_frame->set_cursor(CURSOR_E); - ctype = CURSOR_E; - bbbb = ResizeTypeRight; - return 1; - case ResizeTypeDown: - ELOG("FrameEventHandler (resizing): ResizeTypeDown"); - curr_frame->set_cursor(CURSOR_S); - ctype = CURSOR_S; - bbbb = ResizeTypeDown; - return 1; - default: - //curr_frame->set_cursor(CURSOR_DEFAULT); - bbbb = ResizeTypeNone; - return 1; - } - return 1; - } - - case FL_PUSH: - ELOG("FrameEventHandler: FL_PUSH"); - - if(Fl::event_is_click()) - { - curr_frame->borders_color(CLICKED); - curr_frame->raise(); - } - return 1; - - case FL_DRAG: - ELOG("FrameEventHandler: FL_DRAG"); - if(bbbb != ResizeTypeNone) - { - if(!curr_frame->resizing()) - { - curr_frame->grab_cursor(); - curr_frame->resize_start(); - curr_frame->show_coordinates_window(); - } - - //XGrabServer(fl_display); - - curr_frame->set_cursor(ctype); - curr_frame->resize_window(Fl::event_x_root(), Fl::event_y_root(), bbbb); - curr_frame->update_coordinates_window(); - } - return 1; - - case FL_RELEASE: - ELOG("FrameEventHandler: FL_RELEASE"); - if(curr_frame->resizing()) - { - //XUngrabServer(fl_display); - curr_frame->resize_end(); - curr_frame->ungrab_cursor(); - curr_frame->hide_coordinates_window(); - curr_frame->set_cursor(CURSOR_DEFAULT); - } - - //curr_frame->color(FL_GRAY); - curr_frame->borders_color(FOCUSED); - return 1; - default: - // let other events go to sizers - return curr_frame->handle_parent(event); - } - return 0; - -} - -int FrameEventHandler::handle_x(XEvent* event) -{ - switch(event->type) - { - case MapRequest: - return map_event(event->xmaprequest); - case UnmapNotify: - return unmap_event(event->xunmap); - case ReparentNotify: - return reparent_event(event->xreparent); - case DestroyNotify: - return destroy_event(event->xdestroywindow); - /*case ClientMessage: - return client_message(event->xclient);*/ - case LeaveNotify: - case EnterNotify: - return enter_leave_event(event->xcrossing); - - /* FocusIn, as FocusOut is not used, but for - * debugging is here. When we map a large number - * of windows, X seems goes into (for me unknown) - * infinite FocusIn/FocusOut loop, which blocks - * everything. So, to keep us far away from pain, - * leave FocusIn for someone else. Here should not - * be used. - */ - case FocusIn: - { - ELOG("FrameEventHandler: FocusIn"); - switch(event->xfocus.mode) - { - case NotifyNormal: - ELOG(" - NotifyNormal"); - break; - case NotifyGrab: - ELOG(" - NotifyGrab"); - break; - case NotifyUngrab: - ELOG(" - NotifyUngrab"); - break; - } - - if(event->xfocus.send_event) - ELOG(" - got from SendEvent"); - - /* This will prevent menus, etc. - * to steal focus from parent. - */ - //if(event->xfocus.mode == NotifyNormal) - // curr_frame->focus(); - } - return 1; - - /* FocusOut really fuck up focusing so - * it is not handled. Either xfocus.mode == NotifyNormal - * does not helps when window emits menu, since menu - * itself will yield FocusOut for parent and FocusIn - * for itself. Unfortunately I don't know any toolkit - * which export some kind MENU flag, where we can check. - * So, let we shut it up, make ourself little bit happy - * and take all burden of FocusOut to ourself (which made - * use very very unhappy). - */ - case FocusOut: - { - ELOG("FrameEventHandler: FocusOut"); - switch(event->xfocus.mode) - { - case NotifyNormal: - ELOG(" - NotifyNormal"); - break; - case NotifyGrab: - ELOG(" - NotifyGrab"); - break; - case NotifyUngrab: - ELOG(" - NotifyUngrab"); - break; - } - - if(event->xfocus.send_event) - ELOG(" - got from SendEvent"); - //curr_frame->unfocus(); - } - return 1; - case PropertyNotify: - return property_event(event->xproperty); - case ConfigureRequest: - return configure_event(event->xconfigurerequest); - return 1; - - default: -#ifdef _DEBUG - const char* name = WindowManager::instance()->xevent_map[event->type]; - if(name) - ELOG("Got unhandled %s in frame", name); - else - ELOG("Got unhandled event in frame (%i)", event->type); -#endif - return 0; - } - return 0; -} - -int FrameEventHandler::map_event(const XMapRequestEvent& e) -{ - TRACE_FUNCTION("int FrameEventHandler::map_event(const XMapRequestEvent& e)"); - assert(e.window == curr_frame->window()); - - curr_frame->map(); - - return 1; -} - -int FrameEventHandler::unmap_event(const XUnmapEvent& e) -{ - TRACE_FUNCTION("int FrameEventHandler::unmap_event(const XUnmapEvent& e)"); - //assert(e.window == curr_frame->window()); - if(e.window != curr_frame->window()) - return 1; - - ELOG("FrameEventHandler: UnmapNotify (%s)", FRAME_NAME(curr_frame->fdata)); - if(e.from_configure) - return 1; - - if(curr_frame->option(FrameOptIgnoreUnmap)) - { - ELOG("Frame have FrameOptIgnoreUnmap, skiping this event"); - curr_frame->clear_option(FrameOptIgnoreUnmap); - } - else - curr_frame->unmap(); - - return 1; -} - -int FrameEventHandler::reparent_event(const XReparentEvent& e) -{ - TRACE_FUNCTION("int FrameEventHandler::reparent_event(const XReparentEvent& e)"); - ELOG("FrameEventHandler: ReparentNotify (%s)", FRAME_NAME(curr_frame->fdata)); - - // echo - if(e.parent == fl_xid(curr_frame)) - return 1; - // app is trying to tear-off again ??? - if(e.parent == fl_xid(WindowManager::instance())) - return 1; - - if(e.override_redirect) - { - ELOG("override_redirect from reparent_event"); - } - - EWARNING("Destroy in ReparentNotify!"); - curr_frame->destroy(); - - return 1; -} - -int FrameEventHandler::destroy_event(const XDestroyWindowEvent& e) -{ - TRACE_FUNCTION("int FrameEventHandler::destroy_event(const XDestroyWindowEvent& e)"); - - curr_frame->destroy(); - return 1; -} - -int FrameEventHandler::client_message(const XClientMessageEvent& e) -{ - TRACE_FUNCTION("int FrameEventHandler::client_message(const XClientMessageEvent& e)"); - - if(!ValidateDrawable(e.window)) - return 1; - -#ifdef _DEBUG - Atom a = e.message_type; - const char* name = WindowManager::instance()->atom_map[a]; - if(name) - ELOG("FrameEventHandler: unhandled atom %s", name); - else - ELOG("FrameEventHandler: unhandled atom %x", a); -#endif - - return 1; -} - -/* Handle property atoms. Here Netwm atoms are handled - * last, giving them precedence and chance to overwrite - * Icccm stuf (list XA_WM_NAME vs. _XA_NET_WM_NAME) - */ -int FrameEventHandler::property_event(const XPropertyEvent& e) -{ - TRACE_FUNCTION("int FrameEventHandler::property_event(const XPropertyEvent& e)"); - - if(e.atom == XA_WM_NAME) - ELOG("XA_WM_NAME"); - if(e.atom == XA_WM_ICON_NAME) - ELOG("XA_WM_ICON_NAME"); - if(e.atom == XA_WM_HINTS) - ELOG("XA_WM_HINTS"); - if(e.atom == XA_WM_NORMAL_HINTS) - ELOG("XA_WM_NORMAL_HINTS"); - if(e.atom == XA_WM_SIZE_HINTS) - ELOG("XA_WM_SIZE_HINTS"); - if(e.atom == XA_WM_TRANSIENT_FOR) - ELOG("XA_WM_TRANSIENT_FOR"); - if(e.atom == _XA_WM_COLORMAP_WINDOWS) - ELOG("_XA_WM_COLORMAP_WINDOWS"); - if(e.atom == _XA_WM_STATE) - ELOG("_XA_WM_STATE"); - if(e.atom == _XA_WM_PROTOCOLS) - ELOG("_XA_WM_PROTOCOLS"); - if(e.atom == _XA_NET_WM_WINDOW_TYPE) - ELOG("_XA_NET_WM_WINDOW_TYPE"); - if(e.atom == _XA_NET_WM_STRUT) - { - ELOG("_XA_NET_WM_STRUT"); - int dummy; - WindowManager::instance()->hints()->netwm_strut(curr_frame->fdata->window, - &dummy, &dummy, &dummy, &dummy); - } - if(e.atom == _XA_NET_WM_NAME) - ELOG("_XA_NET_WM_NAME"); - if(e.atom == _XA_NET_WM_ICON) - ELOG("_XA_NET_WM_ICON"); - if(e.atom == _XA_KWM_WIN_ICON) - ELOG("_XA_KWM_WIN_ICON"); - - return 1; -} - -/* Handle EnterNotify and LeaveNotify events. - * Here is used only LeaveNotify to change cursor, since it will be - * trigered only on window borders (exact what is needed). On other - * hand, entering frame's child (or plain window) is handled by - * window itself, with ability to change cursor as like. - * Note, this event could not be simulated with FL_LEAVE, since - * it will be trigered only when mouse if off from whole window - * (including childs). - * - * Also, checkings of frame resizings are must, since mouse moving is - * usually faster than window resizing, so we will get flickering in - * cursors changes if not checked. - * - * TODO: better will be cursor is grabbed ! - */ -int FrameEventHandler::enter_leave_event(const XCrossingEvent& e) -{ - TRACE_FUNCTION("int FrameEventHandler::enter_event(const XEnterWindowEvent& e)"); - if(curr_frame->state(FrameStateUnmapped)) - return 1; - - if(e.type == LeaveNotify && !curr_frame->resizing()) - curr_frame->set_cursor(CURSOR_DEFAULT); - - return 1; -} - -/* This message we can get for windows we know about and we don't know - * about (since all root messages are redirected to us). So we first check - * is window is managed by us, and apply changes to it via our functions. - * Otherwise, we configure window directly. - * - * Note: in fltk's fluid(1.1.6), setting x coords will send us pretty - * amount of junk (change x and y in the same time !!!). This is probably - * bug in fluid. - */ -int FrameEventHandler::configure_event(const XConfigureRequestEvent& e) -{ - TRACE_FUNCTION("int FrameEventHandler::configure_event(const XConfigureRequestEvent& e)"); - - if(curr_frame->state(FrameStateUnmapped)) - return 1; - - if(curr_frame->window() == e.window) - { - ELOG("ConfigureRequest from frame"); - if(!ValidateDrawable(curr_frame->window())) - return 1; - - int x_pos = curr_frame->fdata->plain.x; - int y_pos = curr_frame->fdata->plain.y; - int w_sz = curr_frame->fdata->plain.w; - int h_sz = curr_frame->fdata->plain.h; - - if(e.value_mask & CWX) - x_pos = e.x; - if(e.value_mask & CWY) - y_pos = e.y; - if(e.value_mask & CWWidth) - w_sz = e.width; - if(e.value_mask & CWHeight) - h_sz = e.height; - - if(e.value_mask & CWStackMode) - { - if(e.detail == Above) - curr_frame->raise(); - if(e.detail == Below) - curr_frame->lower(); - } - - curr_frame->set_size(x_pos, y_pos, w_sz, h_sz, true); - } - else - { - ELOG("ConfigureRequest from unhandled window"); - - if(ValidateDrawable(e.window)) - { - XWindowChanges wc; - wc.x = e.x; - wc.y = e.y; - wc.width = e.width; - wc.height = e.height; - wc.stack_mode = e.detail; - XConfigureWindow(fl_display, e.window, e.value_mask, &wc); - } - } - - return 1; -} diff --git a/edewm/Events.h b/edewm/Events.h deleted file mode 100644 index 1dfced1..0000000 --- a/edewm/Events.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * $Id: Events.h 1683 2006-07-17 14:05:47Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef __EVENTS_H__ -#define __EVENTS_H__ - -#include // XEvent - -/* Purpose of this class is to - * split and minimize already big Frame class - */ - -class Frame; - -class FrameEventHandler -{ - private: - Frame* curr_frame; - - int map_event(const XMapRequestEvent& e); - int unmap_event(const XUnmapEvent& e); - int reparent_event(const XReparentEvent& e); - int destroy_event(const XDestroyWindowEvent& e); - int client_message(const XClientMessageEvent& e); - int property_event(const XPropertyEvent& e); - int enter_event(const XCrossingEvent& e); - int configure_event(const XConfigureRequestEvent& e); - int enter_leave_event(const XCrossingEvent& e); - public: - FrameEventHandler(Frame* f); - ~FrameEventHandler(); - int handle_fltk(int e); - int handle_x(XEvent* e); -}; - -#endif diff --git a/edewm/Frame.cpp b/edewm/Frame.cpp deleted file mode 100644 index 14f8100..0000000 --- a/edewm/Frame.cpp +++ /dev/null @@ -1,1700 +0,0 @@ -/* - * $Id: Frame.cpp 1736 2006-08-19 00:38:53Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#include "Frame.h" -#include "Events.h" -#include "Hints.h" -#include "Windowmanager.h" -#include "Atoms.h" -#include "Utils.h" -#include "Titlebar.h" -#include "debug.h" -#include "Sound.h" -#include "Tracers.h" - -#include -#include // snprintf - -#ifdef SHAPE - #include -#endif // SHAPE - - -#define FRAME_NAME(frame) (frame->label ? frame->label : "NULL") - -// TODO: just for testing -#define BORDER_UPDOWN 3 -#define BORDER_LEFTRIGHT 3 - -#define BORDER_THIN_UPDOWN 1 -#define BORDER_THIN_LEFTRIGHT 1 - -#define SIZER_W 15 -#define SIZER_H 15 - -#define MIN_W 0 -#define MIN_H 0 - -#define TITLEBAR_H 20 - -#define EDGE_SNAP 10 - - -void FrameBorders::item_color(Fl_Color c, FrameBordersState s, bool is_border) -{ - switch(s) - { - case FOCUSED: - (is_border) ? (focused = c) : (sizers_focused = c); - break; - case UNFOCUSED: - (is_border) ? (unfocused = c) : (sizers_unfocused = c); - break; - case CLICKED: - (is_border) ? (clicked = c) : (sizers_clicked = c); - break; - } -} - -Fl_Color FrameBorders::item_color(FrameBordersState s, bool is_border) -{ - switch(s) - { - case FOCUSED: - if(is_border) - return focused; - else - return sizers_focused; - case UNFOCUSED: - if(is_border) - return unfocused; - else - return sizers_unfocused; - case CLICKED: - if(is_border) - return clicked; - else - return sizers_clicked; - } - - return FL_GRAY; -} - -void FrameBorders::updown(int s) -{ - updown_w = s; - updown2x_w = s * 2; -} - -void FrameBorders::leftright(int s) -{ - leftright_h = s; - leftright2x_h = s * 2; -} - -void FrameBorders::shaped(bool s) -{ - is_shaped = s; -} - -CoordinatesView::CoordinatesView() : Fl_Window(120, 20) -{ - color(FL_WHITE); - box(FL_BORDER_BOX); - data_box = new Fl_Box(0, 0, w(), h()); - data_box->label_size(11); - end(); -} - -CoordinatesView::~CoordinatesView() -{ -} - -void CoordinatesView::display_data(int x, int y, int w, int h) -{ - snprintf(data, sizeof(data)-1, "%i x %i x %i x %i", x, y, w, h); - data_box->label(data); - data_box->redraw_label(); - redraw(); -} - -Frame::Frame(Window win, XWindowAttributes* attrs) : - Fl_Window(0, 0), - fdata(new FrameData), - screen_x(0), - screen_y(0), - screen_w(0), - screen_h(0), - restore_x(0), - restore_y(0), - restore_w(0), - restore_h(0), - opaque_move_resize(false), - show_titlebar(true), - is_moving(false), - is_resizing(false), - cursor_grabbed(false), - snap_move(false), - show_coordinates(true) -{ - // register our events - events = new FrameEventHandler(this); - - if(show_coordinates) - cview = new CoordinatesView(); - - fdata->window = win; - fdata->transient_win = None; - fdata->colormap = DefaultColormap(fl_display, fl_screen); - fdata->option = 0; - fdata->type = FrameTypeNormal; - fdata->state = 0; - fdata->win_gravity = 0; - fdata->autoplace = true; - fdata->icon_pixmap = 0; - fdata->icon_mask = 0; - fdata->label = 0; - fdata->label_alocated = false; - - fdata->plain.x = fdata->plain.y = 0; - fdata->plain.w = fdata->plain.h = 0; - fdata->plain.offset_x = fdata->plain.offset_y = 0; - fdata->plain.inc_w = fdata->plain.inc_h = 0; - fdata->plain.max_w = fdata->plain.max_h = 0; - fdata->plain.min_w = fdata->plain.min_h = 0; - - overlay.x = overlay.y = overlay.w = overlay.h = 0; - - borders.border_color(fl_darker(FL_GRAY), FOCUSED); - borders.border_color(FL_WHITE, UNFOCUSED); - borders.border_color(FL_BLUE, CLICKED); - - borders.sizers_color(FL_GRAY, FOCUSED); - borders.sizers_color(FL_RED, UNFOCUSED); - borders.sizers_color(FL_RED, CLICKED); - // recalculated in setup_borders - borders.updown(0); - borders.leftright(0); - borders.shaped(false); - - // we does not use window specific borders - fdata->plain.border = 0; - - // collect data - WindowManager* wm = WindowManager::instance(); - - screen_x = wm->x(); - screen_y = wm->y(); - screen_w = wm->w(); - screen_h = wm->h(); - - XWindowAttributes init_attrs; - if(attrs) - { - init_attrs = *attrs; - set_option(FrameOptIgnoreUnmap); - } - else - XGetWindowAttributes(fl_display, fdata->window, &init_attrs); - - fdata->plain.x = init_attrs.x; - fdata->plain.y = init_attrs.y; - fdata->plain.w = init_attrs.width; - fdata->plain.h = init_attrs.height; - - load_colormap(init_attrs.colormap); - - if(init_attrs.map_state == IsViewable) - set_state(FrameStateNormal); - else if(init_attrs.map_state == IsUnmapped) - set_state(FrameStateIconized); - else if(init_attrs.map_state == IsUnviewable) - ELOG("Got IsUnviewable map_state, skiping for now..."); - - wm->hints()->icccm_size(fdata); - wm->hints()->icccm_wm_hints(fdata); - wm->hints()->netwm_window_type(fdata); - wm->hints()->netwm_window_state(fdata); - wm->hints()->mwm_load_hints(fdata); - - load_label(); - - // do this asap so we don't miss any events... - XSelectInput(fl_display, fdata->window, - VisibilityChangeMask | ColormapChangeMask | - PropertyChangeMask | FocusChangeMask /*| StructureNotifyMask*/); - - XGetTransientForHint(fl_display, fdata->window, &fdata->transient_win); - if(fdata->transient_win != None) - { - fdata->type = FrameTypeDialog; - ELOG("Got transient_win"); - } - - if(fdata->type == FrameTypeNormal || fdata->type == FrameTypeDialog) - { - set_option(FrameOptHaveTitlebar | FrameOptHaveBorder | FrameOptCloseable | FrameOptMoveable); - if(fdata->type == FrameTypeNormal) - set_option(FrameOptResizeable | FrameOptHideable); - - borders.leftright(BORDER_LEFTRIGHT); - borders.updown(BORDER_UPDOWN); - } - - init_overlay(borders.updown()); - - x(fdata->plain.x); - y(fdata->plain.y); - - w(fdata->plain.w + borders.leftright2x()); - h(fdata->plain.h + borders.updown2x()); - XSetWindowBorderWidth(fl_display, fdata->window, fdata->plain.border); - - XMoveResizeWindow(fl_display, fdata->window, fdata->plain.x, fdata->plain.y, - fdata->plain.w, fdata->plain.h); - - ELOG("XWindowAttributes: %i %i %i %i", fdata->plain.x, fdata->plain.y, fdata->plain.w, fdata->plain.h); - begin(); - Fl_Color szc = borders.sizers_color(FOCUSED); - sizer_top_left = new Fl_Box(1,1,SIZER_W,SIZER_H); - sizer_top_left->box(FL_FLAT_BOX); - sizer_top_left->color(szc); - - sizer_top_right = new Fl_Box(1,1,SIZER_W,SIZER_H); - sizer_top_right->box(FL_FLAT_BOX); - sizer_top_right->color(szc); - - sizer_bottom_left = new Fl_Box(1,1,SIZER_W,SIZER_H); - sizer_bottom_left->box(FL_FLAT_BOX); - sizer_bottom_left->color(szc); - - sizer_bottom_right = new Fl_Box(1,1,SIZER_W,SIZER_H); - sizer_bottom_right->box(FL_FLAT_BOX); - sizer_bottom_right->color(szc); - - - if(show_titlebar) - { - titlebar = new Titlebar(this, borders.leftright(), borders.updown(), - w() - borders.leftright2x(), TITLEBAR_H, "Untitled"); - - if(fdata->label) - titlebar->label(fdata->label); - - /* Offset for fdata->window in our frame. - * Used in reparenting. - */ - fdata->plain.offset_x = borders.leftright(); - fdata->plain.offset_y = borders.updown() + titlebar->h(); - } - else - { - fdata->plain.offset_x = borders.leftright(); - fdata->plain.offset_y = borders.updown(); - } - - end(); - - /* Reposition and resize main frame - * but skip it if position is already - * set by some hints or fdata->autoplace is false. - * - * NOTE: efltk set minimal position 2x2 - * so this is check. If window is initialy - * tried to be placed on 0x0 it will be - * misteriously hidden. - */ - int pos_x; - int pos_y; - if(fdata->autoplace && wm->query_best_position(&pos_x, &pos_y, w(), h())) - { - if(pos_x <= 2) - pos_x = x(); - if(pos_y <= 2) - pos_y = y(); - - ELOG("This window does use autoplace"); - } - else - { - // recorrect positions made up in setup_borders() ?@#@! including - // titlebar if present - if((x() - borders.leftright()) > screen_x) - pos_x = x() - borders.leftright(); - else - pos_x = x(); - - if(show_titlebar && (y() - titlebar->h() - borders.updown()) > screen_y) - pos_y = y() - titlebar->h() - borders.updown(); - else if((y() - borders.updown()) > screen_y) - pos_y = y() - borders.updown(); - else - pos_y = y(); - } - - if(show_titlebar) - resize(pos_x, pos_y, w(), h() + titlebar->h()); - else - resize(pos_x, pos_y, w(), h()); - - place_sizers(x(), y(), w(), h()); - - // only normal windows can be resized - if(fdata->type != FrameTypeNormal) - hide_sizers(); - - set_override(); - // color of main window background, aka borders - color(borders.border_color(FOCUSED)); - create(); - reparent_window(); - configure_notify(); - - // rest is in content_click() - XGrabButton(fl_display, AnyButton, AnyModifier, fdata->window, - False, ButtonPressMask, GrabModeSync, GrabModeAsync, None, None); - - // show our creation - XMapWindow(fl_display, fdata->window); - show(); - - if(borders.shaped()) - shape_borders(); - - //shape_edges(); - - XAddToSaveSet(fl_display, fdata->window); - - // TODO: this handling should be in WindowManager - wm->window_list.push_back(this); - - if(fdata->transient_win != None) - { - ELOG("Added to aot_list"); - // latest mapped windows will be _before_ others iff they are transient - wm->aot_list.push_front(this); - } - else - { - ELOG("Added to stack_list"); - wm->stack_list.push_front(this); - } - - if(fdata->option & FrameOptTakeFocus) - focus(); - - ELOG("Window loaded, frame: 0x%x plain: 0x%x", fl_xid(this), fdata->window); - XFlush(fl_display); -} - -Frame::~Frame() -{ - ELOG("Frame::~Frame"); - if(fdata->label_alocated) - free(fdata->label); - - XFreeGC(fl_display, overlay.inverted_gc); - - if(show_coordinates) - delete cview; - - delete events; - delete fdata; -} -#if 0 -void Frame::feed_data(XWindowAttributes* existing) -{ - WindowManager* wm = WindowManager::instance(); - - screen_x = wm->x(); - screen_y = wm->y(); - screen_w = wm->w(); - screen_h = wm->h(); - - wm->hints()->icccm_size(fdata); - - // TODO: For testing only. Better solution will be. - fdata->type = wm->hints()->netwm_window_type(fdata); - - setup_borders(); - - if(fdata->type == FrameTypeSplash - || fdata->type == FrameTypeMenu - || fdata->type == FrameTypeDesktop - || fdata->type == FrameTypeDock) - { - show_titlebar = false; - } - // ------------------------------------------------ - - wm->hints()->netwm_window_state(fdata); - wm->hints()->mwm_load_hints(fdata); - - load_wm_hints(); - load_colormap(); - load_label(); - - XWindowAttributes attrs; - if(existing) - attrs = *existing; - else - XGetWindowAttributes(fl_display, fdata->window, &attrs); - - // according to ICCCM standard, returned values must - // be used for window only, excluding decorations - fdata->plain.x = attrs.x; - fdata->plain.y = attrs.y; - // TODO: add checking if window out of screen - fdata->plain.w = attrs.width; - fdata->plain.h = attrs.height; - - ELOG("XWindowAttributes: %i %i %i %i", fdata->plain.x, fdata->plain.y, fdata->plain.w, fdata->plain.h); - - // Shorthand for: fdata->colormap = attrs->colormap; - // ...for easier tracking - if(fdata->colormap != attrs.colormap) - load_colormap(attrs.colormap); - - switch(attrs.map_state) - { - case IsUnmapped: - set_state(FrameStateIconized); - break; - case IsViewable: - set_state(FrameStateNormal); - break; - case IsUnviewable: - ELOG("Got IsUnviewable map_state, skiping for now..."); - break; - } -} -#endif -/* load WM_HINTS property, finding if window - * have icons and in what state is in - * TODO: place this as Hint::icccm_load_wm_hints() - */ -#if 0 -void Frame::load_wm_hints(void) -{ - XWMHints* wm_hints = XAllocWMHints(); - wm_hints = XGetWMHints(fl_display, fdata->window); - if(!wm_hints) - { - ELOG("XGetWMHints failed!"); - return; - } - - if((wm_hints->flags & IconPixmapHint) && wm_hints->icon_pixmap) - fdata->icon_pixmap = wm_hints->icon_pixmap; - if((wm_hints->flags & IconMaskHint) &&wm_hints->icon_mask) - fdata->icon_mask = wm_hints->icon_mask; - - switch(wm_hints->initial_state) - { - case WithdrawnState: - XRemoveFromSaveSet(fl_display, fdata->window); - break; - case IconicState: - fdata->state = FrameStateIconized; - break; - case NormalState: - default: - fdata->state = FrameStateNormal; - break; - } - - // check for focus - if((wm_hints->flags & InputHint) && !wm_hints->input) - fdata->option &= ~FrameOptTakeFocus; // window does not want focus - else - fdata->option |= FrameOptTakeFocus; // window want focus; - - XFree(wm_hints); -} -#endif -// guess title -void Frame::load_label(void) -{ - TRACE_FUNCTION("void Frame::load_label(void)"); - WindowManager* wm = WindowManager::instance(); - - // first try NETWM style - fdata->label = wm->hints()->netwm_label(fdata->window, &fdata->label_alocated); - if(!fdata->label) - { - // then ICCCM - fdata->label = wm->hints()->icccm_label(fdata->window, &fdata->label_alocated); - } - ELOG("Window: %s (%p) loaded", (fdata->label ? fdata->label : "NULL"), fdata->window); -} - -void Frame::destroy(void) -{ - TRACE_FUNCTION("void Frame::destroy(void)"); - - ELOG("window goes down"); - if(state(FrameStateDestroyed)) - return; - - if(!state(FrameStateUnmapped)) - { - if(ValidateDrawable(fdata->window)) - { - XRemoveFromSaveSet(fl_display, fdata->window); - XUnmapWindow(fl_display, fdata->window); - XUnmapWindow(fl_display, fl_xid(this)); - } - } - - set_state(FrameStateDestroyed); - WindowManager::instance()->update_client_list(); - Fl::awake(); -} - -void Frame::map(void) -{ - if(!state(FrameStateUnmapped)) - return; - - XAddToSaveSet(fl_display, fdata->window); - XMapWindow(fl_display, fdata->window); - XMapWindow(fl_display, fl_xid(this)); - - clear_state(FrameStateUnmapped); -} - -void Frame::unmap(void) -{ - if(state(FrameStateUnmapped)) - return; - - if(ValidateDrawable(fdata->window)) - { - XRemoveFromSaveSet(fl_display, fdata->window); - XUnmapWindow(fl_display, fdata->window); - XUnmapWindow(fl_display, fl_xid(this)); - } - - set_state(FrameStateUnmapped); -} - -// Install custom or default colormap. -// Default colormap is read only once, in Frame constructor. -void Frame::load_colormap(Colormap col) -{ - TRACE_FUNCTION("void Frame::load_colormap(Colormap col)"); - - if(col != 0) - { - ELOG("Installing custom colormap"); - fdata->colormap = col; - } - else - ELOG("Loading default colormap"); - - XInstallColormap(fl_display, fdata->colormap); -} - -// Recalculate framed based on plain. -// If window is outside screen, fix what needs to be fixed -void Frame::setup_borders(void) -{ - TRACE_FUNCTION("void Frame::setup_borders(void)"); - - int tx, ty; - switch(fdata->type) - { - case FrameTypeNormal: - /* border = BORDER_NORMAL; */ - borders.leftright(BORDER_LEFTRIGHT); - borders.updown(BORDER_UPDOWN); - break; - case FrameTypeDialog: - /*border = BORDER_THIN; */ - //borders.leftright(BORDER_THIN_LEFTRIGHT); - //borders.updown(BORDER_THIN_UPDOWN); - borders.leftright(BORDER_LEFTRIGHT); - borders.updown(BORDER_UPDOWN); - break; - case FrameTypeSplash: - case FrameTypeDesktop: - case FrameTypeMenu: - case FrameTypeDock: - borders.leftright(0); - borders.updown(0); - // they don't have visible borders - break; - } - - // TODO: setting up initial window sizes - // should not be in setup_borders(); - tx = fdata->plain.x - borders.leftright(); - ty = fdata->plain.y - borders.updown(); - if(tx < 0) - fdata->plain.x = borders.leftright(); - if(ty < 0) - fdata->plain.y = borders.updown(); - x(fdata->plain.x); - y(fdata->plain.y); - - w(fdata->plain.w + borders.leftright2x()); - h(fdata->plain.h + borders.updown2x()); - - // set fdata->window borders, althought fdata->plain.borders is - // always 0 - XSetWindowBorderWidth(fl_display, fdata->window, fdata->plain.border); -} -#if 0 -/* Setup window sizes to minimal usable (MIN_W, MIN_H) - * but only for normal windows. Transient should set - * their size internally. - */ -void Frame::init_sizes(void) -{ - if(fdata->type == FrameTypeDialog) - return; - - if(fdata->plain.w < MIN_W) - fdata->plain.w = MIN_W; - if(fdata->plain.h < MIN_H) - fdata->plain.h = MIN_H; -} -#endif -void Frame::init_overlay(int border_size) -{ - XGCValues v; - v.subwindow_mode = IncludeInferiors; - v.foreground = 0xffffffff; - v.function = GXxor; - v.line_width = border_size; - v.graphics_exposures = False; - int mask = GCForeground | GCSubwindowMode | GCFunction | GCLineWidth | GCGraphicsExposures; - overlay.inverted_gc = XCreateGC(fl_display, - WindowManager::instance()->root_window(), mask, &v); -} - -void Frame::reparent_window(void) -{ - TRACE_FUNCTION("void Frame::reparent_window(void)"); - - if(!ValidateDrawable(fdata->window)) - return; - - const int XEventMask = - ExposureMask | - StructureNotifyMask| - VisibilityChangeMask | - KeyPressMask| - KeyReleaseMask| - KeymapStateMask| - FocusChangeMask | - ButtonPressMask | - ButtonReleaseMask | - EnterWindowMask | - LeaveWindowMask | - PointerMotionMask | - SubstructureRedirectMask | - SubstructureNotifyMask; - - - XSetWindowAttributes sattr; - // TODO: some windows set bit_gravity too - sattr.bit_gravity = NorthWestGravity; - sattr.event_mask = XEventMask; - sattr.colormap = fl_colormap; - sattr.border_pixel = fl_xpixel(FL_BLACK); - sattr.override_redirect = 0; - sattr.background_pixel = fl_xpixel(FL_GRAY); - XChangeWindowAttributes(fl_display, fl_xid(this), - CWBitGravity | CWBorderPixel | CWColormap | CWEventMask | CWBackPixel | CWOverrideRedirect, &sattr); - - XReparentWindow(fl_display, fdata->window, fl_xid(this), fdata->plain.offset_x, fdata->plain.offset_y); -/* - if(!show_titlebar) - { - XReparentWindow(fl_display, fdata->window, fl_xid(this), - borders.leftright(), borders.updown()); - } - else - { - XReparentWindow(fl_display, fdata->window, fl_xid(this), - borders.leftright(), borders.updown() + titlebar->h()); - } -*/ - -} - -void Frame::recalc_geometry(int x_pos, int y_pos, int w_sz, int h_sz, short rtype) -{ - TRACE_FUNCTION("void Frame::recalc_geometry(int x_pos, int y_pos, int w_sz, int h_sz, short rtype"); - - if(rtype == GeometryRecalcAll) - { - x(x_pos); y(y_pos); - w(w_sz); h(h_sz); - - fdata->plain.x = x() + borders.leftright(); - fdata->plain.y = y() + borders.updown(); - fdata->plain.w = w() - borders.leftright2x(); - } - else if(rtype == GeometryRecalcAllXY) - { - // do not include fdata->plain.w - // FIXME: duplication as above - x(x_pos); y(y_pos); - w(w_sz); h(h_sz); - fdata->plain.x = x() + borders.leftright(); - fdata->plain.y = y() + borders.updown(); - } - else if(rtype == GeometryRecalcPlain) - { - fdata->plain.x = x_pos; - fdata->plain.y = y_pos; - fdata->plain.w = w_sz; - fdata->plain.h = h_sz; - - x(x_pos - borders.leftright()); - y(y_pos - borders.updown()); - w(w_sz + borders.leftright2x()); - } - else - { - // we should no be here - assert(0); - } - - - if(show_titlebar) - { - // titlebar->resize(border, border, w() - border2x, titlebar->h()); - if(rtype == GeometryRecalcAll) - { - fdata->plain.h = h() - (titlebar->h() + borders.updown2x()); - } - else if(rtype == GeometryRecalcPlain) - { - h(h_sz + titlebar->h() + borders.updown2x()); - } - - titlebar->size(w() - borders.leftright2x(), titlebar->h()); - } - else - { - if(rtype == GeometryRecalcAll) - { - fdata->plain.h = h() - borders.updown2x(); - } - else if(rtype == GeometryRecalcPlain) - { - h(h_sz + borders.updown2x()); - } - } - - /* Sanitize sizes. If we go below min width and height - * even X will start to yell. Who likes yelling ? - * - * TODO: maybe when we detect this, should disallow any - * further moves/resizes ? - */ - if(fdata->plain.w <= fdata->plain.min_w) - { - int offset = fdata->plain.min_w - fdata->plain.w; - fdata->plain.w = fdata->plain.min_w; - w(w() + offset); - } - - if(fdata->plain.h <= fdata->plain.min_h) - { - int offset = fdata->plain.min_h - fdata->plain.h; - fdata->plain.h = fdata->plain.min_h; - h(h() + offset); - } - - - ELOG("p: %i %i %i %i w: %i %i %i %i", - fdata->plain.x, fdata->plain.y, fdata->plain.w, fdata->plain.h, - x(), y(), w(), h()); -} - -/* Set size of window, accepting coordinates for fdata->window + frame, - * int which case it will be resized both. - */ -void Frame::set_size(int x_pos, int y_pos, int w_sz, int h_sz, bool apply_on_plain) -{ - TRACE_FUNCTION("void Frame::set_size(int x_pos, int y_pos, int w_sz, int h_sz, bool apply_on_plain)"); - - if(!ValidateDrawable(fdata->window)) - return; - - short how; - if(apply_on_plain) - how = GeometryRecalcPlain; - else - how = GeometryRecalcAll; - - recalc_geometry(x_pos, y_pos, w_sz, h_sz, how); - - XGrabServer(fl_display); - - place_sizers(x(), y(), w(), h()); - XMoveWindow(fl_display, fl_xid(this), x(), y()); - XResizeWindow(fl_display, fl_xid(this), w(), h()); - XResizeWindow(fl_display, fdata->window, fdata->plain.w, fdata->plain.h); - - if(borders.shaped()) - shape_borders(); - - XUngrabServer(fl_display); - - configure_notify(); - redraw(); -} - -void Frame::move_window(int x_pos, int y_pos) -{ - TRACE_FUNCTION("void Frame::move_window(int x_pos, int y_pos)"); - - //draw_overlay(x_pos, y_pos, w(), h()); - //return; - - // very dummy snapping with screen edges - // TODO: what about other window(s) edges ? - if(snap_move) - { - int snap_x = screen_x + EDGE_SNAP; - int snap_y = snap_x; - int snap_w = screen_w - EDGE_SNAP; - int snap_h = screen_h - EDGE_SNAP; - int w_pos = x_pos + w(); - int h_pos = y_pos + h(); - - if(snap_x > x_pos - EDGE_SNAP && snap_x < x_pos + EDGE_SNAP) - x_pos = screen_x; - if(snap_y > y_pos - EDGE_SNAP && snap_y < y_pos + EDGE_SNAP) - y_pos = screen_y; - - if(snap_w > w_pos - EDGE_SNAP && snap_w < w_pos + EDGE_SNAP) - x_pos = screen_w - w(); - if(snap_h > h_pos - EDGE_SNAP && snap_h < h_pos + EDGE_SNAP) - y_pos = screen_h - h(); - } - - recalc_geometry(x_pos, y_pos, w(), h(), GeometryRecalcAllXY); - XMoveWindow(fl_display, fl_xid(this), x(), y()); - configure_notify(); -} - -void Frame::draw_overlay(int x, int y, int w, int h) -{ - TRACE_FUNCTION("void Frame::draw_overlay(int x, int y, int w, int h)"); -/* - XGCValues v; - v.subwindow_mode = IncludeInferiors; - v.foreground = 0xffffffff; - v.function = GXxor; - v.line_width = borders.updown(); - v.graphics_exposures = False; - int mask = GCForeground|GCSubwindowMode|GCFunction|GCLineWidth|GCGraphicsExposures; - GC invertGc = XCreateGC(fl_display, RootWindow(fl_display, fl_screen), mask, &v); -*/ - - if (w < 0) {x += w; w = -w;} - else if (!w) w = 1; - if (h < 0) {y += h; h = -h;} - else if (!h) h = 1; - Window root = WindowManager::instance()->root_window(); - - if(overlay.w > 0) - { - if(x == overlay.x && y == overlay.y && w == overlay.w && h == overlay.h) - return; - XDrawRectangle(fl_display, root, overlay.inverted_gc, overlay.x, overlay.y, overlay.w, overlay.h); - } - - overlay.x = x; - overlay.y = y; - overlay.w = w; - overlay.h = h; - - XDrawRectangle(fl_display, root, overlay.inverted_gc, overlay.x, overlay.y, overlay.w, overlay.h); -} - -void Frame::clear_overlay(void) -{ - if(overlay.w > 0) - { - Window root = WindowManager::instance()->root_window(); - XDrawRectangle(fl_display, root, overlay.inverted_gc, overlay.x, overlay.y, overlay.w, overlay.h); - overlay.w = 0; - } -} - -void Frame::place_sizers(int x, int y, int w, int h) -{ - TRACE_FUNCTION("void Frame::place_sizers(int x, int y, int w, int h)"); - - // using position() instead resize() will be only - // valid if sizers are initialy set to SIZER_W and SIZER_H - - sizer_top_left->position(0, 0); - sizer_top_right->position(w - SIZER_W, 0); - sizer_bottom_left->position(0, h - SIZER_H); - sizer_bottom_right->position(w - SIZER_W, h - SIZER_H); -} - -/* Determine type of resizing based on position - * (NOTE: here is used relative position - Fl::event_x() and Fl::event_y(), - * which are valid only in frame window). - * - * TODO: any way this can be simplified ? - */ -long Frame::resize_type(int x, int y) -{ - // TRACE_FUNCTION("long Frame::resize_type(int x, int y)"); - - //ELOG("%i %i", x, y); - // we are in top left sizer - if((x >= sizer_top_left->x() && x <= sizer_top_left->w()) && - (y >= sizer_top_left->y() && y <= sizer_top_left->h())) - return ResizeTypeUpLeft; - - // we are in top right sizer - if((x >= sizer_top_right->x() && x <= sizer_top_right->x() + sizer_top_right->w()) && - (y >= sizer_top_right->y() && y <= sizer_top_right->y() + sizer_top_right->h())) - return ResizeTypeUpRight; - - // we are in bottom left sizer - if((x >= sizer_bottom_left->x() && x <= sizer_bottom_left->x() + sizer_bottom_left->w()) && - (y >= sizer_bottom_left->y() && y <= sizer_bottom_left->y() + sizer_bottom_left->h())) - return ResizeTypeDownLeft; - - // we are in bottom right sizer - if((x >= sizer_bottom_right->x() && x <= sizer_bottom_right->x() + sizer_bottom_right->w()) && - y >= sizer_bottom_right->y() && y <= sizer_bottom_right->y() + sizer_bottom_right->h()) - return ResizeTypeDownRight; - - // we are in top border - if((x > sizer_top_left->x() + sizer_top_left->w() && x < sizer_top_right->x()) && - (y < borders.updown())) - return ResizeTypeUp; - - // we are in left border - if((x < borders.leftright()) && (y > sizer_top_left->y() + sizer_top_left->h()) && - y < sizer_bottom_left->y()) - return ResizeTypeLeft; - - // we are in right border - if((x < sizer_top_right->x() + sizer_top_right->w()) && - (x > sizer_top_right->x() + sizer_top_right->w() - borders.leftright()) && - (y > sizer_top_right->y() + sizer_top_right->w()) && - (y < sizer_bottom_left->y())) - return ResizeTypeRight; - - // we are in bottom border - if((x > sizer_bottom_left->x() + sizer_bottom_left->w()) && - (x < sizer_bottom_right->x()) && - (y > sizer_bottom_left->y() + sizer_bottom_left->h() - borders.updown()) && - (y < sizer_bottom_left->y() + sizer_bottom_left->h())) - return ResizeTypeDown; - - - return ResizeTypeNone; -} - -/* unscramble direction, and check what combination it have - * - * TODO: direction should not have oposite sides included - * like ResizeTypeRight | ResizeTypeLeft - */ -void Frame::resize_window(int mouse_x, int mouse_y, long direction) -{ - TRACE_FUNCTION("void Frame::resize_window(int mouse_x, int mouse_y, long direction)"); - - if(direction == 0) - EFATAL("calling resize on possible unresizable window"); - - if(direction & ResizeTypeNone) - return; - -#warning "Add increment/decrement info from icccm" - - // use collected increment/decrement info from icccm - /*int inc_w = fdata->plain.inc_w; - int inc_h = fdata->plain.inc_h; */ - - int tw = 0, th = 0; - - if(direction & ResizeTypeLeft) - { - if(mouse_x > x()) - tw = w() - (mouse_x - x()); // decrease - else - tw = w() + (x() - mouse_x); // increase - - set_size(mouse_x, y(), tw, h(), false); - } - - if(direction & ResizeTypeRight) - { - tw = mouse_x - x(); - set_size(x(), y(), tw, h(), false); - } - - if(direction & ResizeTypeUp) - { - if(mouse_y > y()) - th = h() - (mouse_y - y()); //decrease - else - th = h() + (y() - mouse_y); //increase - - set_size(x(), mouse_y, w(), th, false); - } - - if(direction & ResizeTypeDown) - { - th = mouse_y - y(); - set_size(x(), y(), w(), th, false); - } - -} - -void Frame::configure_notify(void) -{ - TRACE_FUNCTION("void Frame::configure_notify(void)"); - if(!ValidateDrawable(fdata->window)) - return; - - WindowManager::instance()->hints()->icccm_configure(fdata); -} - -// apply shape on borders, based on shape mask -void Frame::shape_borders(void) -{ - TRACE_FUNCTION("void Frame::shape_borders(void)"); - -#ifdef SHAPE - Window shape = XCreateSimpleWindow(fl_display, RootWindow(fl_display, fl_screen), - x(), y(), w(), h(), 0, 0, 0); - - XRectangle rect[4]; - // top - rect[0].x = SIZER_W; - rect[0].y = 0; - rect[0].width = w() - SIZER_W * 2; - rect[0].height = borders.updown(); - - // right - rect[1].x = w() - borders.leftright(); - rect[1].y = SIZER_H; - rect[1].width = borders.leftright(); - rect[1].height = h() - SIZER_H * 2; - - // bottom - rect[2].x = SIZER_W; - rect[2].y = h() - borders.updown(); - rect[2].width = w() - SIZER_W * 2; - rect[2].height = borders.updown(); - - // left - rect[3].x = 0; - rect[3].y = SIZER_H; - rect[3].width = borders.leftright(); - rect[3].height = h() - SIZER_H * 2; - - // modify our shape window - XShapeCombineRectangles(fl_display, shape, ShapeBounding, 0, 0, rect, 4, ShapeSubtract, Unsorted); - // apply our shape window as mask - XShapeCombineShape(fl_display, fl_xid(this), ShapeBounding, 0, 0, shape, ShapeBounding, ShapeSet); - XDestroyWindow(fl_display, shape); -#endif -} - -// apply shape on edges, based on pixmap mask -#include "mask.xpm" -#include -void Frame::shape_edges(void) -{ - TRACE_FUNCTION("void Frame::shape_edges(void)"); -#if 0 - // TODO: finish with other three edges - Fl_Image img((const char**)mask_xpm); - Pixmap mask = img.create_mask(img.width(), img.height()); - - Window shape = XCreateSimpleWindow(fl_display, RootWindow(fl_display, fl_screen), - x(), y(), w(), h(), 0, 0, 0); - - XShapeCombineMask(fl_display, shape, ShapeBounding, 0, 0, mask, ShapeSubtract); - XShapeCombineShape(fl_display, fl_xid(this), ShapeBounding, 0, 0, shape, ShapeBounding, ShapeSet); - XDestroyWindow(fl_display, shape); -#endif -} - -void Frame::maximize(void) -{ - TRACE_FUNCTION("void Frame::maximize(void)"); - - if(state(FrameStateShaded)) - { - ELOG("Maximizing shaded windows is bugy as devil himself !"); - return; - } - - if(fdata->type == FrameTypeDialog) - { - ELOG("Dialogs should not be resized !"); - return; - } - - if(state(FrameStateMaximized)) - { - ELOG("Window is alread maximized"); - return; - } - - restore_x = x(); - restore_y = y(); - restore_w = w(); - restore_h = h(); - - set_size(screen_x, screen_y, screen_w, screen_h, false); - set_state(FrameStateMaximized); - - WindowManager::instance()->play_sound(SOUND_MAXIMIZE); -} - -void Frame::restore(void) -{ - TRACE_FUNCTION("void Frame::restore(void)"); - - if(!state(FrameStateMaximized)) - { - ELOG("Restore unmaximized window ???"); - return; - } - - set_size(restore_x, restore_y, restore_w, restore_h, false); - clear_state(FrameStateMaximized); - - WindowManager::instance()->play_sound(SOUND_RESTORE); -} - -/* First will inspect does window participate for WM_DELETE_WINDOW - * message, and if not, it will be killed. That is the life... - */ -void Frame::close_kill(void) -{ - TRACE_FUNCTION("void Frame::close_kill(void)"); - - Atom* protocols; - int n; - bool have_close = false; - - if(XGetWMProtocols(fl_display, fdata->window, &protocols, &n)) - { - for(int i = 0; i < n; i++) - { - if(protocols[i] == _XA_WM_DELETE_WINDOW) - have_close = true; - } - - XFree(protocols); - } - if(have_close) - SendMessage(fdata->window, _XA_WM_PROTOCOLS, _XA_WM_DELETE_WINDOW); - else - { - ELOG("Frame killed"); - XKillClient(fl_display, fdata->window); - } - - WindowManager::instance()->play_sound(SOUND_CLOSE); -} - -// window accepts input -void Frame::focus(void) -{ - TRACE_FUNCTION("void Frame::focus(void)"); - - if(state(FrameStateFocused)) - return; - - if(!ValidateDrawable(fdata->window)) - return; - - WindowManager::instance()->clear_focus_windows(); - - borders_color(FOCUSED); - if(show_titlebar) - titlebar->focus(); - - //XSetInputFocus(fl_display, fdata->window, RevertToPointerRoot, fl_event_time); - XSetInputFocus(fl_display, fdata->window, RevertToPointerRoot, CurrentTime); - XInstallColormap(fl_display, fdata->colormap); - - /* DO NOT use this ! - * SendMessage(fdata->window, _XA_WM_PROTOCOLS, _XA_WM_TAKE_FOCUS); - */ - - WindowManager::instance()->hints()->netwm_set_active_window(fdata->window); - set_state(FrameStateFocused); -} - -void Frame::unfocus(void) -{ - if(!state(FrameStateFocused)) - return; - - TRACE_FUNCTION("void Frame::unfocus(void)"); - - borders_color(UNFOCUSED); - if(show_titlebar) - titlebar->unfocus(); - - clear_state(FrameStateFocused); -} - -void Frame::raise(void) -{ - TRACE_FUNCTION("void Frame::raise(void)"); - - WindowManager* wm = WindowManager::instance(); - if(wm->stack_list.size() <= 1) - { - ELOG("Only one window, restacking skipped"); - focus(); - return; - } - - FrameList::iterator it = wm->stack_list.begin(); - FrameList::iterator last = wm->stack_list.end(); - - while(it != last) - { - if(*it == this) - { - wm->stack_list.erase(it); - wm->stack_list.push_front(*it); - } - - ++it; - } - wm->restack_windows(); - focus(); -} - -/* Send frame one stack position below. - * Note that as in raise(), aot_list is not checked - * since those windows are _always_ on top. This will - * rearange stack_list and call restack_windows(), as you guess. - * - * Yes, this can be avoided using XWindowChanges with - * x.sibling and x.stack_mode = Below, which is much faster - * but we will lose arangements in stack_list and posibility - * to update _NET_CLIENT_LIST_STACKING atom. So stick with this. - * - * PS: if you have idea how to combine XWindowChanges with X calls - * without needs to update stack_list, but to extract full stacking - * list for _NET_CLIENT_LIST_STACKING, let me know. - */ -void Frame::lower(void) -{ - TRACE_FUNCTION("void Frame::lower(void)"); - - WindowManager* wm = WindowManager::instance(); - - if(wm->stack_list.size() <= 1) - { - ELOG("Only one window, restacking skipped"); - return; - } - - FrameList::iterator top = wm->stack_list.begin(); - - /* We are not at the top. - * This will prevent rise-lower-rise effect when - * function is called multiple times. - */ - if(this != *top) - return; - - FrameList::iterator below = top; - ++below; - - if(*below) - { - std::swap(*top, *below); - } - - wm->restack_windows(); - focus(); -} - -/* When we want to shade window, child (fdata->window) must - * completely disapear (as should it be). Funny thing is - * if few pixels child is visible, some programs-windows - * will crash (like mrxvt). - */ -void Frame::shade(void) -{ - TRACE_FUNCTION("void Frame::shade(void)"); - - if(!show_titlebar) - return; - - if(state(FrameStateShaded)) - return; - - restore_x = x(); - restore_y = y(); - restore_w = w(); - restore_h = h(); - - // place it to outside frame - int px = -(fdata->plain.offset_x + fdata->plain.w); - int py = -(fdata->plain.offset_y + fdata->plain.h); - - XMoveWindow(fl_display, fdata->window, px, py); - XResizeWindow(fl_display, fl_xid(this), w(), titlebar->h() + borders.updown2x()); - - set_state(FrameStateShaded); - WindowManager::instance()->hints()->netwm_set_window_state(fdata); - - WindowManager::instance()->play_sound(SOUND_SHADE); - - // Configure not needed, since we do nothing usefull to window - //configure_notify(); -} - -void Frame::unshade(void) -{ - TRACE_FUNCTION("void Frame::unshade(void)"); - - if(!show_titlebar) - return; - - if(!state(FrameStateShaded)) - { - ELOG("Unshade not shaded window ???"); - return; - } - - XMoveResizeWindow(fl_display, fdata->window, fdata->plain.offset_x, fdata->plain.offset_y, - fdata->plain.w, fdata->plain.h); - XResizeWindow(fl_display, fl_xid(this), w(), restore_h); - - clear_state(FrameStateShaded); - WindowManager::instance()->hints()->netwm_set_window_state(fdata); - - WindowManager::instance()->play_sound(SOUND_SHADE); - - // Configure not needed, since we do nothing usefull to window - //configure_notify(); -} - -void Frame::borders_color(FrameBordersState s) -{ - TRACE_FUNCTION("void Frame::borders_color(FrameBordersState s)"); - - Fl_Color szc = borders.sizers_color(s); - sizer_top_left->color(szc); - sizer_top_right->color(szc); - sizer_bottom_left->color(szc); - sizer_bottom_right->color(szc); - - color(borders.border_color(s)); - redraw(); -} - -void Frame::show_sizers(void) -{ - TRACE_FUNCTION("void Frame::show_sizers(void)"); - - sizer_top_left->show(); - sizer_top_right->show(); - sizer_bottom_left->show(); - sizer_bottom_right->show(); -} - -void Frame::hide_sizers(void) -{ - TRACE_FUNCTION("void Frame::hide_sizers(void)"); - - sizer_top_left->hide(); - sizer_top_right->hide(); - sizer_bottom_left->hide(); - sizer_bottom_right->hide(); -} - -void Frame::set_cursor(CursorType t) -{ - WindowManager::instance()->set_cursor(this, t); -} - -#if 0 -/* This function will change window type, to some of - * netwm types. Note, this function should _not_ be used - * anywhere except from toolbar menu, where window can - * be modified (if allowed in options). - * - * TODO: If we want borderless window, netwm does not provide - * anything like _NET_WM_WINDOW_TYPE_SPLASH, but not for splashes. - * Maybe we should add something like _EDE_WM_WINDOW_TYPE_PLAIN ? - */ -void Frame::change_window_type(short type) -{ - TRACE_FUNCTION("void Frame::change_window_type(short type)"); - - if(type == fdata->type) - return; - - // set fdata->window borders, althought fdata->plain.borders is - // always 0 - XSetWindowBorderWidth(fl_display, fdata->window, fdata->plain.border); - - fdata->type = type; - - switch(fdata->type) - { - case FrameTypeNormal: - borders.leftright(BORDER_LEFTRIGHT); - borders.updown(BORDER_UPDOWN); - break; - case FrameTypeDialog: - borders.leftright(BORDER_THIN_LEFTRIGHT); - borders.updown(BORDER_THIN_UPDOWN); - break; - case FrameTypeSplash: - case FrameTypeDesktop: - case FrameTypeMenu: - case FrameTypeDock: - borders.leftright(0); - borders.updown(0); - if(show_titlebar && titlebar) - { - titlebar->hide(); - show_titlebar = false; - } - // they don't have visible borders - break; - } - - // TODO: setting up initial window sizes - // should not be in setup_borders(); - if(fdata->type == FrameTypeNormal || fdata->type == FrameTypeDialog) - { - int tx, ty; - tx = fdata->plain.x - borders.leftright(); - ty = fdata->plain.y - borders.updown(); - /* - if(tx < 0) - fdata->plain.x = borders.leftright(); - if(ty < 0) - fdata->plain.y = borders.updown(); - */ - x(fdata->plain.x); - y(fdata->plain.y); - - w(fdata->plain.w + borders.leftright2x()); - h(fdata->plain.h + borders.updown2x()); - } - // means only borders - else - { - /* First resize window to size of child (x,y will be preserved) - * then resize child. - * XXX: child window's x,y are offsets from x,y of parent, so - * they are 0. - * We can't use Fl_Window::size(), since explicit window sizing - * does not work. In that case, slap it with hammer ! - */ - XResizeWindow(fl_display, fl_xid(this), fdata->plain.w, fdata->plain.h); - XMoveResizeWindow(fl_display, fdata->window, 0, 0, fdata->plain.w, fdata->plain.h); - } - - WindowManager::instance()->hints()->netwm_set_window_type(fdata); -} -#endif -/* After XGrabButton, WindowManager will FL_PUSH events - * redirect here. We must make sure after processing them - * redirect events further to fdata->window. - * - * We should not worry about transients (or any window - * it aot_list) since they will be always on top. - * - * TODO: Should we allow events on below windows event - * if transients are shown ??? - */ -void Frame::content_click(void) -{ - TRACE_FUNCTION("void Frame::content_click(void)"); - - ELOG("Clicked on frame: %s", FRAME_NAME(fdata)); - - if(fl_xevent.xbutton.button == 1) - raise(); - - XAllowEvents(fl_display, ReplayPointer, CurrentTime); -} - -void Frame::show_coordinates_window(void) -{ - if(!show_coordinates) - return; - - TRACE_FUNCTION("void Frame::show_coordinates_window(void)"); - - // calculate center of frame, and show it there - int cx = (x() + w()/2) - (cview->w()/2); - int cy = (y() + h()/2) - (cview->h()/2); - - /* Check if we are inside screen coordinates or showing window - * beyond them will not show window at all! - */ - if(cx < screen_x) - cx = screen_x; - if(cy < screen_y) - cy = screen_y; - if((cx + cview->w()) > screen_w) - cx = screen_w - cview->w(); - if((cy + cview->h()) > screen_h) - cy = screen_h - cview->h(); - - cview->position(cx, cy); - //if(!cview->shown()) - cview->show(); -} - -void Frame::update_coordinates_window(void) -{ - if(!show_coordinates) - return; - - TRACE_FUNCTION("void Frame::update_coordinates_window(void)"); - int cx = (x() + w()/2) - (cview->w()/2); - int cy = (y() + h()/2) - (cview->h()/2); - - if(cx < screen_x) - cx = screen_x; - if(cy < screen_y) - cy = screen_y; - if((cx + cview->w()) > screen_w) - cx = screen_w - cview->w(); - if((cy + cview->h()) > screen_h) - cy = screen_h - cview->h(); - - cview->position(cx, cy); - cview->display_data(x(), y(), w(), h()); -} - -void Frame::hide_coordinates_window(void) -{ - if(!show_coordinates) - return; - - TRACE_FUNCTION("void Frame::hide_coordinates_window(void)"); - cview->hide(); -} - -// handle events that efltk understainds -int Frame::handle(int event) -{ - return events->handle_fltk(event); -} - -int Frame::handle(XEvent* event) -{ - return events->handle_x(event); -} - -// this is here so FrameEventHandler can access Fl_Window -int Frame::handle_parent(int event) -{ - return Fl_Window::handle(event); -} - -/* Grab pointer, scheduling pointer events for future use. - * The only thing I can say is this is the only way of correct - * usage, althought I would like to see pointer in GrabModeAsync. - * Later is hardly possible (think so) because efltk will not be - * able to synchronize itself with X events. - */ -void Frame::grab_cursor(void) -{ - TRACE_FUNCTION("void Frame::grab_cursor(void)"); - - if(cursor_grabbed) - return; - - // use currently set cursor - Cursor cc = WindowManager::instance()->cursor_handler()->current_cursor(); - - if(XGrabPointer(fl_display, fl_xid(this), - true, /* owner events */ - ButtonMotionMask | ButtonPressMask |ButtonReleaseMask | PointerMotionMask, - GrabModeAsync, /* pointer mode */ - GrabModeAsync, /* keyboard mode */ - None, - cc, fl_event_time) == GrabSuccess) - { - //XAllowEvents(fl_display, AsyncPointer, CurrentTime); - cursor_grabbed = true; - ELOG("Cursor grabbed"); - } -} - -void Frame::ungrab_cursor(void) -{ - TRACE_FUNCTION("void Frame::ungrab_cursor(void)"); - - if(!cursor_grabbed) - return; - - ELOG("Cursor ungrabbed"); - Fl::event_is_click(0); // avoid double click - //XAllowEvents(fl_display, Fl::event() == FL_PUSH ? ReplayPointer : AsyncPointer, CurrentTime); - XUngrabPointer(fl_display, fl_event_time); - XFlush(fl_display); // make sure we are out of danger before continuing... - // because we "pushed back" the FL_PUSH, make it think no buttons are down: - Fl::e_state &= 0xffffff; - Fl::e_keysym = 0; - - cursor_grabbed = false; -} - -void Frame::display_internals(void) -{ - EPRINTF("-----------------------------------\n"); - EPRINTF("window : %lx\n", fdata->window); - EPRINTF("transient : %lx\n", fdata->transient_win); - EPRINTF("colormap : %lx\n", fdata->colormap); - EPRINTF("state : %li\n", fdata->state); - EPRINTF("options : %li\n", fdata->option); - EPRINTF("type : %i\n", fdata->type); - EPRINTF("min width : %i\n", fdata->plain.min_w); - EPRINTF("min height : %i\n", fdata->plain.min_h); - EPRINTF("max width : %i\n", fdata->plain.max_w); - EPRINTF("max height : %i\n", fdata->plain.max_h); - EPRINTF("x : %i\n", fdata->plain.x); - EPRINTF("y : %i\n", fdata->plain.y); - EPRINTF("w : %i\n", fdata->plain.w); - EPRINTF("h : %i\n", fdata->plain.h); - EPRINTF("x (framed) : %i\n", x()); - EPRINTF("y (framed) : %i\n", y()); - EPRINTF("w (framed) : %i\n", w()); - EPRINTF("h (framed) : %i\n", h()); - EPRINTF("gravity : %i\n", fdata->win_gravity); - EPRINTF("autoplace : %i\n", fdata->autoplace); - EPRINTF("have icon : %s\n", (fdata->icon_pixmap ? "yes" : "no")); - EPRINTF("have icon mask : %s\n", (fdata->icon_mask ? "yes" : "no")); - EPRINTF("label : %s\n", (fdata->label ? fdata->label : "NULL")); - EPRINTF("-----------------------------------\n"); -} diff --git a/edewm/Frame.h b/edewm/Frame.h deleted file mode 100644 index affef12..0000000 --- a/edewm/Frame.h +++ /dev/null @@ -1,344 +0,0 @@ -/* - * $Id: Frame.h 1736 2006-08-19 00:38:53Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef _FRAME_H_ -#define _FRAME_H_ - -#include -#include -#include - -#include "Cursor.h" - -// frame states (internal) -#define FrameStateNormal (1 << 0) // neither of below states -#define FrameStateUnmapped (1 << 1) // or Withdrawn -#define FrameStateDestroyed (1 << 2) // destroyed window, handled by WindowManager -#define FrameStateFocused (1 << 3) - -// frame states (netwm) -#define FrameStateModal (1 << 4) // transients -#define FrameStateSticky (1 << 5) -#define FrameStateShaded (1 << 6) -#define FrameStateHidden (1 << 7) // or iconized -#define FrameStateIconized FrameStateHidden - -/* These two types are used to emit _NET_WM_STATE_ABOVE and _NET_WM_STATE_BELOW. - * For me it is unclear why they didn't called _NET_WM_STATE_ALWAYS_(ABOVE,BELOW) - * since all wm's set them in this state (except transient who are always above all - * windows), and stacking order can't be changed. Anyway, enjoy with more apropriate - * names. - */ -#define FrameStateAlwaysAbove (1 << 8) -#define FrameStateAlwaysBelow (1 << 9) - -#define FrameStateMaximizedHorz (1 << 10) -#define FrameStateMaximizedVert (1 << 11) -#define FrameStateMaximized (FrameStateMaximizedHorz | FrameStateMaximizedVert) - -// some options frame can have (or their combinations) -/* -#define FrameOptSkipList (1 << 0) // some reason why not in list -#define FrameOptBorder (1 << 1) -#define FrameOptThinBorder (1 << 2) -#define FrameOptTitlebar (1 << 3) -#define FrameOptSysmenu (1 << 4) // what a hell !?!? -#define FrameOptMinimize (1 << 5) -#define FrameOptMaxmize (1 << 6) -#define FrameOptClose (1 << 7) -#define FrameOptResize (1 << 8) -#define FrameOptMove (1 << 9) -#define FrameOptTakeFocus (1 << 10) -#define FrameOptKeepAspect (1 << 11) -*/ - -#define FrameOptSkipList (1 << 0) -#define FrameOptHaveBorder (1 << 1) -#define FrameOptHaveTitlebar (1 << 2) -#define FrameOptResizeable (1 << 3) -#define FrameOptMoveable (1 << 4) -#define FrameOptCloseable (1 << 5) -#define FrameOptHideable (1 << 6) -#define FrameOptTakeFocus (1 << 7) -#define FrameOptKeepAspect (1 << 8) - -/* some events echo UnmapNotify, like ReparentNotify, and if we - * start wm on existing X session with open windows, this flag will - * prevent they be unmapped - */ -#define FrameOptIgnoreUnmap (1 << 12) - -// frame type -#define FrameTypeNormal 0 -#define FrameTypeDialog 1 -#define FrameTypeSplash 2 -#define FrameTypeDock 3 -#define FrameTypeToolbar 4 -#define FrameTypeMenu 5 -#define FrameTypeUtil 6 -#define FrameTypeDesktop 7 - -// type of resizing; means from which -// side of window is resize doing -#define ResizeTypeNone (1 << 0) -#define ResizeTypeLeft (1 << 1) -#define ResizeTypeRight (1 << 2) -#define ResizeTypeUp (1 << 3) -#define ResizeTypeDown (1 << 4) -#define ResizeTypeUpLeft (ResizeTypeUp | ResizeTypeLeft) -#define ResizeTypeDownLeft (ResizeTypeDown | ResizeTypeLeft) -#define ResizeTypeUpRight (ResizeTypeUp | ResizeTypeRight) -#define ResizeTypeDownRight (ResizeTypeDown | ResizeTypeRight) -#define ResizeTypeAll (ResizeTypeUp | ResizeTypeDown | ResizeTypeLeft | ResizeTypeRight) - -// type of recalc_geometry() -#define GeometryRecalcAll 0 -#define GeometryRecalcAllXY 1 // recalc all, except for plain w and h -#define GeometryRecalcPlain 2 - -// now lets go to code... - -// window sizes without borders, titlebar etc. -struct WindowGeometry -{ - int x, y, w, h; - int offset_x, offset_y; - int min_w, min_h; - int max_w, max_h; - int inc_w, inc_h; - int border; -}; - -struct FrameData -{ - Window window; - Window transient_win; - Colormap colormap; - - WindowGeometry plain; - - Pixmap icon_pixmap; - Pixmap icon_mask; - char* label; - bool label_alocated; - long state; - long option; - short type; - - int win_gravity; - bool autoplace; - bool have_transient; - -// Icon* icon; -}; - -struct Overlay -{ - int x, y, w, h; - GC inverted_gc; -}; - -enum FrameBordersState -{ - FOCUSED = 1, - UNFOCUSED, - CLICKED -}; - -class FrameBorders -{ - private: - Fl_Color focused; - Fl_Color unfocused; - Fl_Color clicked; - Fl_Color sizers_focused; - Fl_Color sizers_unfocused; - Fl_Color sizers_clicked; - int updown_w; - int updown2x_w; - int leftright_h; - int leftright2x_h; - bool is_shaped; - bool is_border; - void item_color(Fl_Color c, FrameBordersState s, bool is_border); - Fl_Color item_color(FrameBordersState s, bool is_border); - - public: - void border_color(Fl_Color c, FrameBordersState s) { item_color(c, s, true); } - void sizers_color(Fl_Color c, FrameBordersState s) { item_color(c, s, false); } - void updown(int s); - void leftright(int s); - void shaped(bool s); - - Fl_Color border_color(FrameBordersState s) { return item_color(s, true); } - Fl_Color sizers_color(FrameBordersState s) { return item_color(s, false); } - int updown(void) { return updown_w; } - int updown2x(void) { return updown2x_w; } - int leftright(void) { return leftright_h; } - int leftright2x(void) { return leftright2x_h; } - bool shaped(void) { return is_shaped; } -}; - -/* Window responsible for displaying parent - * coordinates. It will _not_ be framed. - */ -class CoordinatesView : public Fl_Window -{ - private: - char data[100]; - Fl_Box* data_box; - public: - CoordinatesView(); - ~CoordinatesView(); - void display_data(int x, int y, int w, int h); -}; - - -class Titlebar; -class FrameEventHandler; - -// Head honcho of everything -class Frame : public Fl_Window -{ - private: - friend class FrameEventHandler; - - FrameData* fdata; - int screen_x, screen_y, screen_w, screen_h; - // sizes used when we do restore() - int restore_x, restore_y, restore_w, restore_h; - - bool opaque_move_resize; - bool show_titlebar; - bool is_moving; - bool is_resizing; - bool cursor_grabbed; - bool snap_move; - bool show_coordinates; - - FrameBorders borders; - FrameEventHandler* events; - - Titlebar* titlebar; - - Fl_Box* sizer_top_left; - Fl_Box* sizer_top_right; - Fl_Box* sizer_bottom_left; - Fl_Box* sizer_bottom_right; - - CoordinatesView* cview; - - Overlay overlay; - - // private loaders - void feed_data(XWindowAttributes* attrs); - //void load_wm_hints(void); - /* void load_size_hints(void); */ - void load_label(void); - - // preparers - void setup_borders(void); - // void init_sizes(void); - void init_overlay(int border_size); - void reparent_window(void); - void place_sizers(int x, int y, int w, int h); - long resize_type(int x, int y); - - void recalc_geometry(int x, int y, int w, int h, short rtype); - void configure_notify(void); - void shape_borders(void); - void shape_edges(void); - - void show_sizers(void); - void hide_sizers(void); - - void draw_overlay(int x, int y, int w, int h); - void clear_overlay(void); - - // this is here so FrameEventHandler can access Fl_Window - int handle_parent(int event); - - Frame(const Frame&); - Frame operator=(const Frame&); - - public: - Frame(Window, XWindowAttributes* = 0); - ~Frame(); - - Window window(void) { return fdata->window; } - Window transient_window(void) { return fdata->transient_win; } - - void settings_changed(void) { } - int handle(int e); - int handle(XEvent* e); - void destroy(void); - void display_internals(void); - void content_click(void); - - bool frame_type(short t) { return ((fdata->type == t) ? true : false); } - - void set_state(long s) { fdata->state |= s; } - bool state(long s) { return ((fdata->state & s) == s) ? true : false; } - void clear_state(long s) { fdata->state &= ~s; } - void clear_all_states(void) { fdata->state = 0; } - - void set_option(long o) { fdata->option |= o; } - bool option(long o) { return ((fdata->option & o) == o) ? true : false; } - void clear_option(long o) { fdata->option &= ~o; } - void clear_all_options(void) { fdata->option = 0; } - - // public loaders - void load_colormap(Colormap col = 0); - - // window manipulators - void set_size(int x, int y, int w, int h, bool apply_on_plain); - void move_window(int x, int y); - void resize_window(int mouse_x, int mouse_y, long direction); - void maximize(void); - void restore(void); - void shade(void); - void unshade(void); - void close_kill(void); - void focus(void); - void unfocus(void); - void raise(void); - void lower(void); - void borders_color(FrameBordersState s); - void set_cursor(CursorType t); - // void change_window_type(short t); - void map(void); - void unmap(void); - - void show_coordinates_window(void); - void update_coordinates_window(void); - void hide_coordinates_window(void); - - //const FrameBorders& frame_borders(void) { return borders; } - - /* These function are used to determine how Frame - * will dispatch events between titlebar and sizers - */ - void move_start(void) { is_moving = true; } - void move_end(void) { is_moving = false; } - bool moving(void) { return is_moving; } - void resize_start(void) { is_resizing = true; } - void resize_end(void) { is_resizing = false; } - bool resizing(void) { return is_resizing; } - - // TODO: should this be in WindowManager or here ??? - void grab_cursor(void); - void ungrab_cursor(void); - - bool destroy_scheduled(void) { return state(FrameStateDestroyed); } -}; - -#endif diff --git a/edewm/Hints.cpp b/edewm/Hints.cpp deleted file mode 100644 index 179cf55..0000000 --- a/edewm/Hints.cpp +++ /dev/null @@ -1,512 +0,0 @@ -/* - * $Id: Hints.cpp 1736 2006-08-19 00:38:53Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#include "Hints.h" -#include "Tracers.h" -#include "Frame.h" -#include "Atoms.h" -#include "Windowmanager.h" - -#include -#include // CARD32 -#include - -#define MwmHintsDecorations (1 << 1) - -#define MwmDecorAll (1 << 0) -#define MwmDecorBorder (1 << 1) -#define MwmDecorHandle (1 << 2) -#define MwmDecorTitle (1 << 3) -#define MwmDecorMenu (1 << 4) -#define MwmDecorMinimize (1 << 5) -#define MwmDecorMaximize (1 << 6) - -#define PropMotifHintsElements 3 - -struct MwmHints -{ - unsigned long flags; - unsigned long functions; - unsigned long decorations; -}; - -void Hints::icccm_size(FrameData* f) -{ - TRACE_FUNCTION("void Hints::icccm_size(FrameData* f)"); - - assert(f != 0); - long supplied; - XSizeHints* sh = XAllocSizeHints(); - - if(!XGetWMNormalHints(fl_display, f->window, sh, &supplied)) - sh->flags = 0; - - if(sh->flags & PResizeInc) - { - if(sh->width_inc < 1) - sh->width_inc = 1; - if(sh->height_inc < 1) - sh->height_inc = 1; - } - - /* Check if PBaseSize flag is set. If not - * fill it with minimal values and use them below. - */ - if(!(sh->flags & PBaseSize)) - sh->base_width = sh->base_height = 0; - - if(!(sh->flags & PMinSize)) - { - sh->min_width = sh->base_width; - sh->min_height= sh->base_height; - } - - if(!(sh->flags & PMaxSize)) - { - sh->max_width = 32767; - sh->max_height = 32767; - } - - if(sh->max_width < sh->min_width || sh->max_width <= 0) - sh->max_width = 32767; - if(sh->max_height < sh->min_height || sh->max_height <= 0) - sh->max_height = 32767; - - if(!(sh->flags & PWinGravity)) - { - sh->win_gravity = NorthWestGravity; - sh->flags |= PWinGravity; - } - - f->plain.max_w = sh->max_width; - f->plain.max_h = sh->max_height; - //f->plain.w = sh->base_width; - //f->plain.h = sh->base_height; - f->plain.min_w = sh->min_width; - f->plain.min_h = sh->min_height; - f->win_gravity = sh->win_gravity; - - // TODO: maybe calculate aspect_min and aspect_max ? - if(sh->flags & PAspect) - f->option |= FrameOptKeepAspect; - - f->autoplace = (!(sh->flags & (USPosition|PPosition))); - - XFree(sh); -} - -void Hints::icccm_wm_hints(FrameData* f) -{ - TRACE_FUNCTION("void Hints::icccm_wm_hints(FrameData* f)"); - assert(f != NULL); - - XWMHints* wm_hints = XAllocWMHints(); - wm_hints = XGetWMHints(fl_display, f->window); - if(!wm_hints) - { - ELOG("XGetWMHints failed!"); - return; - } - - if((wm_hints->flags & IconPixmapHint) && wm_hints->icon_pixmap) - f->icon_pixmap = wm_hints->icon_pixmap; - if((wm_hints->flags & IconMaskHint) &&wm_hints->icon_mask) - f->icon_mask = wm_hints->icon_mask; - - switch(wm_hints->initial_state) - { - case WithdrawnState: - XRemoveFromSaveSet(fl_display, f->window); - break; - case IconicState: - f->state = FrameStateIconized; - break; - case NormalState: - default: - f->state = FrameStateNormal; - break; - } - - // check for focus - if((wm_hints->flags & InputHint) && !wm_hints->input) - f->option &= ~FrameOptTakeFocus; // window does not want focus - else - f->option |= FrameOptTakeFocus; // window want focus; - - XFree(wm_hints); -} - -char* Hints::icccm_label(Window win, bool* allocated) -{ - TRACE_FUNCTION("char* Hints::icccm_label(Window win, bool* allocated)"); - - XTextProperty xtp; - char* title = 0; - if(XGetWMName(fl_display, win, &xtp)) - { - if(xtp.encoding == XA_STRING) - { - title = strdup((const char*)xtp.value); - *allocated = true; - } - else - { - ELOG("X11 UTF8 text property not supported, at least for now..."); - *allocated = false; - } - - XFree(xtp.value); - } - - return title; -} - -void Hints::icccm_set_iconsizes(WindowManager* wm) -{ - TRACE_FUNCTION("void Hints::icccm_set_iconsizes(WindowManager* wm)"); - assert(wm != 0); - - XIconSize* is = XAllocIconSize(); - if(!is) - { - ELOG("XAllocIconSize failed!"); - return; - } - - is->min_width = is->min_height = 8; - is->max_width = is->max_height = 48; - is->width_inc = is->height_inc = 1; - ELOG("setting icon sizes"); - XSetIconSizes(fl_display, WindowManager::instance()->root_window(), is, 1); - XFree(is); -} - -void Hints::icccm_configure(FrameData* f) const -{ - TRACE_FUNCTION("void Hints::icccm_configure(FrameData* f) const"); - - assert(f != 0); - - XConfigureEvent ce; - ce.send_event = True; - ce.display = fl_display; - ce.type = ConfigureNotify; - ce.event = f->window; - ce.window = f->window; - ce.x = f->plain.x; - ce.y = f->plain.y; - ce.width = f->plain.w; - ce.height = f->plain.h; - ce.border_width = f->plain.border; - ce.above = None; - ce.override_redirect = False; - XSendEvent(fl_display, f->window, False, StructureNotifyMask, (XEvent*)&ce); -} - -char* Hints::netwm_label(Window win, bool* allocated) -{ - TRACE_FUNCTION("char* Hints::netwm_label(Window win, bool* allocated)"); - - unsigned char* title = 0; - Atom real_type; - int real_format; - unsigned long items_read, items_left; - - int status = XGetWindowProperty(fl_display, win, _XA_NET_WM_NAME, - 0L, 0x7fffffff, False, _XA_UTF8_STRING, &real_type, &real_format, &items_read, &items_left, - (unsigned char**)&title); - - if(status != Success && items_read != 1) - { - *allocated = false; - if(title) - XFree(title); - - return 0; - } - - *allocated = true; - return (char*)title; -} - -void Hints::netwm_window_type(FrameData* fd) -{ - TRACE_FUNCTION("short Hints::netwm_window_type(FrameData* fd) const"); - - Atom *data; - Atom real_type; - int real_format; - unsigned long items_read, items_left; - short type = FrameTypeNormal; - - int status = XGetWindowProperty(fl_display, fd->window, _XA_NET_WM_WINDOW_TYPE, - 0L, 8L, false, XA_ATOM, &real_type, &real_format, &items_read, &items_left, - (unsigned char**)&data); - - if(status != Success || !items_read) - { - ELOG("Netwm say: unknown window type, using FrameTypeNormal"); - type = FrameTypeNormal; - } - - for(unsigned int i = 0; i < items_read; i++) - { - - if(data[i] == _XA_NET_WM_WINDOW_TYPE_DOCK) - { - ELOG("_XA_NET_WM_WINDOW_TYPE_DOCK"); - type = FrameTypeDock; - break; - } - - if(data[i] == _XA_NET_WM_WINDOW_TYPE_TOOLBAR) - { - ELOG("_XA_NET_WM_WINDOW_TYPE_TOOLBAR"); - type = FrameTypeToolbar; - break; - } - - if(data[i] == _XA_NET_WM_WINDOW_TYPE_MENU) - { - ELOG("_XA_NET_WM_WINDOW_TYPE_MENU"); - type = FrameTypeMenu; - break; - } - - if(data[i] == _XA_NET_WM_WINDOW_TYPE_UTIL) - { - ELOG("_XA_NET_WM_WINDOW_TYPE_UTIL"); - type = FrameTypeUtil; - break; - } - - if(data[i] == _XA_NET_WM_WINDOW_TYPE_DIALOG) - { - ELOG("_XA_NET_WM_WINDOW_TYPE_DIALOG"); - type = FrameTypeDialog; - break; - } - - if(data[i] == _XA_NET_WM_WINDOW_TYPE_SPLASH) - { - ELOG("_XA_NET_WM_WINDOW_TYPE_SPLASH"); - type = FrameTypeSplash; - break; - } - - if(data[i] == _XA_NET_WM_WINDOW_TYPE_DESKTOP) - { - ELOG("_XA_NET_WM_WINDOW_TYPE_DESKTOP"); - type = FrameTypeDesktop; - break; - } - - if(data[i] == _XA_NET_WM_WINDOW_TYPE_NORMAL) - { - ELOG("_XA_NET_WM_WINDOW_TYPE_NORMAL"); - type = FrameTypeNormal; - break; - } - } - - XFree(data); - fd->type = type; -} - -void Hints::netwm_set_window_type(FrameData* fd) -{ - TRACE_FUNCTION("void Hints::netwm_set_window_type(FrameData* fd)"); - assert(fd != 0); - - Atom to_set[1]; - switch(fd->type) - { - case FrameTypeNormal: - to_set[0] = _XA_NET_WM_WINDOW_TYPE_NORMAL; - break; - case FrameTypeDesktop: - to_set[0] = _XA_NET_WM_WINDOW_TYPE_DESKTOP; - break; - case FrameTypeSplash: - to_set[0] = _XA_NET_WM_WINDOW_TYPE_SPLASH; - break; - case FrameTypeUtil: - to_set[0] = _XA_NET_WM_WINDOW_TYPE_UTIL; - break; - case FrameTypeMenu: - to_set[0] = _XA_NET_WM_WINDOW_TYPE_MENU; - break; - case FrameTypeToolbar: - to_set[0] = _XA_NET_WM_WINDOW_TYPE_TOOLBAR; - break; - case FrameTypeDialog: - to_set[0] = _XA_NET_WM_WINDOW_TYPE_DIALOG; - break; - case FrameTypeDock: - to_set[0] = _XA_NET_WM_WINDOW_TYPE_DOCK; - break; - default: - EFATAL("Type unknown"); - to_set[0] = _XA_NET_WM_WINDOW_TYPE_NORMAL; - break; - } - - XChangeProperty(fl_display, fd->window, _XA_NET_WM_WINDOW_TYPE, XA_ATOM, 32, - PropModeReplace, (unsigned char*)to_set, 1); -} - -long Hints::netwm_window_state(FrameData* fd) const -{ - TRACE_FUNCTION("long Hints::netwm_window_state(FrameData* fd) const"); - assert(fd != 0); - - Atom *data; - Atom real_type; - int real_format; - unsigned long items_read, items_left; - - int status = XGetWindowProperty(fl_display, fd->window, _XA_NET_WM_STATE, - 0L, 12L, false, XA_ATOM, &real_type, &real_format, &items_read, &items_left, - (unsigned char**)&data); - - if(status != Success || !items_read) - return FrameTypeNormal; - - for(unsigned int i = 0; i < items_read; i++) - { - if(data[i] == _XA_NET_WM_STATE_MODAL) - ELOG("_XA_NET_WM_STATE_MODAL"); - else if(data[i] == _XA_NET_WM_STATE_STICKY) - ELOG("_XA_NET_WM_STATE_STICKY"); - else if(data[i] == _XA_NET_WM_STATE_MAXIMIZED_VERT) - ELOG("_XA_NET_WM_STATE_MAXIMIZED_VERT"); - else if(data[i] == _XA_NET_WM_STATE_MAXIMIZED_HORZ) - ELOG("_XA_NET_WM_STATE_MAXIMIZED_HORZ"); - else if(data[i] == _XA_NET_WM_STATE_SHADED) - ELOG("_XA_NET_WM_STATE_SHADED"); - else if(data[i] == _XA_NET_WM_STATE_SKIP_TASKBAR) - ELOG("_XA_NET_WM_STATE_SKIP_TASKBAR"); - else if(data[i] == _XA_NET_WM_STATE_SKIP_PAGER) - ELOG("_XA_NET_WM_STATE_SKIP_PAGER"); - else if(data[i] == _XA_NET_WM_STATE_HIDDEN) - ELOG("_XA_NET_WM_STATE_HIDDEN"); - else if(data[i] == _XA_NET_WM_STATE_FULLSCREEN) - ELOG("_XA_NET_WM_STATE_FULLSCREEN"); - else if(data[i] == _XA_NET_WM_STATE_ABOVE) - ELOG("_XA_NET_WM_STATE_ABOVE"); - else if(data[i] == _XA_NET_WM_STATE_BELOW) - ELOG("_XA_NET_WM_STATE_BELOW"); - else if(data[i] == _XA_NET_WM_STATE_DEMANDS_ATTENTION) - ELOG("_XA_NET_WM_STATE_DEMANDS_ATTENTION"); - } - - XFree(data); - return FrameStateNormal; -} - -void Hints::netwm_set_window_state(FrameData* fd) -{ - TRACE_FUNCTION("void Hints::set_window_state(FrameData* fd)"); - - assert(fd != 0); - Atom data[10]; - int i = 0; - - if(fd->state & FrameStateSticky) - data[i++] = _XA_NET_WM_STATE_STICKY; - if(fd->state & FrameStateShaded) - data[i++] = _XA_NET_WM_STATE_SHADED; - if(fd->state & FrameStateAlwaysAbove) - data[i++] = _XA_NET_WM_STATE_ABOVE; - if(fd->state & FrameStateAlwaysBelow) - data[i++] = _XA_NET_WM_STATE_BELOW; - if((fd->state & FrameStateMaximizedHorz) || (fd->state & FrameStateMaximized)) - data[i++] = _XA_NET_WM_STATE_MAXIMIZED_HORZ; - if((fd->state & FrameStateMaximizedVert) || (fd->state & FrameStateMaximized)) - data[i++] = _XA_NET_WM_STATE_MAXIMIZED_VERT; - - XChangeProperty(fl_display, fd->window, _XA_NET_WM_STATE, XA_ATOM, 32, - PropModeReplace, (unsigned char*)data, i); -} - -void Hints::netwm_set_active_window(Window win) -{ - TRACE_FUNCTION("void Hints::netwm_set_active_window(Window win)"); - - XChangeProperty(fl_display, WindowManager::instance()->root_window(), _XA_NET_ACTIVE_WINDOW, XA_WINDOW, 32, - PropModeReplace, (unsigned char *)&win, 1); -} - -void Hints::netwm_strut(Window win, int* x, int* y, int* w, int* h) const -{ - TRACE_FUNCTION("void Hints::netwm_strut(Window win, int* x, int* y, int* w, int* h) const"); - - CARD32 *data; - Atom real_type; - int real_format; - unsigned long items_read, items_left; - - int status = XGetWindowProperty(fl_display, win, _XA_NET_WM_STRUT, - 0L, 0x7fffffff, False, XA_CARDINAL, &real_type, &real_format, &items_read, &items_left, - (unsigned char**)&data); - - ELOG("STRUT: items_read %i", items_read); - if(status != Success) - return; - - if((items_read / sizeof(CARD32)) != 4) - { - ELOG("STRUT: window have wrong strut %i", items_read/sizeof(CARD32)); - return; - } - - ELOG("STRUT: %i %i %i %i", data[0], data[1], data[2], data[3]); - XFree((char*)data); -} - -void Hints::mwm_load_hints(FrameData* fd) -{ - TRACE_FUNCTION("void Hints::mwm_load_hints(FrameData* fd)"); - assert(fd != 0); - - Atom real_type; - int real_format; - unsigned long items_read, items_left; - MwmHints* mwm; - - int status = XGetWindowProperty(fl_display, fd->window, _XA_MOTIF_HINTS, - 0L, 20L, false, _XA_MOTIF_HINTS, &real_type, &real_format, &items_read, &items_left, - (unsigned char**)&mwm); - - if(status == Success && items_read /*>= PropMotifHintsElements*/) - { - ELOG("MWM: got hints !!!"); - if((mwm->flags & MwmHintsDecorations)) - { - if(mwm->decorations & MwmDecorAll) - ELOG("MwmDecorAll"); - else - { - if(mwm->decorations & MwmDecorTitle) - ELOG("MwmHintsDecorTitle"); - if(mwm->decorations & MwmDecorBorder) - ELOG("MwmHintsDecorBorder"); - if(mwm->decorations & MwmDecorHandle) - ELOG("MwmHintsDecorHandle"); - } - } - else - ELOG("mwm: no decor at all"); - } - - XFree(mwm); -} diff --git a/edewm/Hints.h b/edewm/Hints.h deleted file mode 100644 index 4f40449..0000000 --- a/edewm/Hints.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * $Id: Hints.h 1736 2006-08-19 00:38:53Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef __HINTS_H__ -#define __HINTS_H__ - -#include - -struct FrameData; -class WindowManager; - -struct Hints -{ - void icccm_size(FrameData* f); - void icccm_wm_hints(FrameData* f); - char* icccm_label(Window win, bool* allocated); - void icccm_set_iconsizes(WindowManager* wm); - void icccm_configure(FrameData* f) const; - - char* netwm_label(Window win, bool* allocated); - void netwm_window_type(FrameData* fd); - void netwm_set_window_type(FrameData* fd); - long netwm_window_state(FrameData* fd) const; - void netwm_set_window_state(FrameData* fd); - void netwm_set_active_window(Window win); - void netwm_strut(Window win, int* x, int* y, int* w, int* h) const; - - void mwm_load_hints(FrameData* fd); -}; - -#endif diff --git a/edewm/Jamfile b/edewm/Jamfile deleted file mode 100644 index b898509..0000000 --- a/edewm/Jamfile +++ /dev/null @@ -1,18 +0,0 @@ -# -# $Id$ -# -# Part of Equinox Desktop Environment (EDE). -# Copyright (c) 2000-2007 EDE Authors. -# -# This program is licensed under terms of the -# GNU General Public License version 2 or newer. -# See COPYING for details. - -SubDir TOP edewm ; - -SOURCE = [ Wildcard *.cpp ] ; -POFILES = [ Wildcard locale : *.po ] ; - -EfltkProgram edewm : $(SOURCE) ; -TranslationStrings locale : $(SOURCE) ; -Translation locale : $(POFILES) ; diff --git a/edewm/Sound.cpp b/edewm/Sound.cpp deleted file mode 100644 index 42e9306..0000000 --- a/edewm/Sound.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/* - * $Id: Sound.cpp 1697 2006-07-21 15:01:05Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#include "Sound.h" -#include "debug.h" - -#ifdef SOUND - #include - #include -#endif - -#include -#include -#include // free -#include // strdup - -SoundSystem::SoundSystem() -{ -#ifdef SOUND - device = NULL; - inited = false; - down = false; -#endif -} - -SoundSystem::~SoundSystem() -{ -#ifdef SOUND - if(!down) - shutdown(); // just in case -#endif -} - -void SoundSystem::init(void) -{ -#ifdef SOUND - EPRINTF("Loading sound system\n"); - - ao_initialize(); - default_driver = ao_default_driver_id(); - - for(int i = 0; i < KNOWN_SOUNDS; i++) - { - event_sound[i].allocated = false; - event_sound[i].loaded = false; - event_sound[i].file_to_play = NULL; - } - - inited = true; -#endif -} - -void SoundSystem::shutdown(void) -{ -#ifdef SOUND - EPRINTF("Shutting down sound system\n"); - - ao_shutdown(); - - for(int i = 0; i < KNOWN_SOUNDS; i++) - { - if(event_sound[i].allocated) - free(event_sound[i].file_to_play); - } - - down = true; -#endif -} - -void SoundSystem::add(short event, const char* file) -{ -#ifdef SOUND - assert(event < KNOWN_SOUNDS); - if(event_sound[event].allocated) - free(event_sound[event].file_to_play); - - event_sound[event].file_to_play = strdup(file); - event_sound[event].allocated = true; - event_sound[event].loaded = true; -#endif -} - -int SoundSystem::play(short event) -{ -#ifdef SOUND - assert(event < KNOWN_SOUNDS); - if(event_sound[event].loaded) - play(event_sound[event].file_to_play); - else - ELOG("Skipping this sound, no file for it"); -#endif - return 1; -} - -int SoundSystem::play(const char* fname) -{ -#ifdef SOUND - assert(inited != false); - assert(fname != NULL); - - FILE* f = fopen(fname, "rb"); - if(f == NULL) - { - ELOG("Can't open %s\n", fname); - return 0; - } - - OggVorbis_File vf; - vorbis_info* vi; - - if(ov_open(f, &vf, NULL, 0) < 0) - { - ELOG("%s does not appear to be ogg file\n"); - fclose(f); - return 0; - } - - // read and print comments - char** comm = ov_comment(&vf, -1)->user_comments; - vi = ov_info(&vf, -1); - - while(*comm) - { - ELOG("%s", *comm); - comm++; - } - - assert(vi != NULL); - - format.bits = 4 * 8; // TODO: should be word_size * 8 - format.channels = vi->channels; - format.rate = vi->rate; - format.byte_format = AO_FMT_NATIVE; - - // now open device - device = ao_open_live(default_driver, &format, NULL); - if(device == NULL) - { - ELOG("Can't open device"); - ov_clear(&vf); - return 0; - } - - int current_section; - while(1) - { - long ret = ov_read(&vf, pcm_out, sizeof(pcm_out), 0, 2, 1, ¤t_section); - if(ret == 0) - break; - else if(ret < 0) - ELOG("Error in the stream, continuing..."); - else - ao_play(device, pcm_out, ret); - } - - ao_close(device); - device = NULL; - - // NOTE: fclose(f) is not needed, since ov_clear() will close file - ov_clear(&vf); -#endif // SOUND - - return 1; -} diff --git a/edewm/Sound.h b/edewm/Sound.h deleted file mode 100644 index 1b68259..0000000 --- a/edewm/Sound.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * $Id: Sound.h 1697 2006-07-21 15:01:05Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef __SOUND_H__ -#define __SOUND_H__ - -#ifdef SOUND - #include -#endif - -enum -{ - SOUND_MINIMIZE = 0, - SOUND_MAXIMIZE, - SOUND_RESTORE, - SOUND_SHADE, - SOUND_CLOSE -}; -#define KNOWN_SOUNDS 5 - -struct EventSound -{ - bool allocated; - bool loaded; - short event; - char* file_to_play; -}; - -#define PCM_BUF_SIZE 4096 - -class SoundSystem -{ -#ifdef SOUND - private: - ao_device* device; - ao_sample_format format; - int default_driver; - char pcm_out[PCM_BUF_SIZE]; - bool inited; - bool down; - EventSound event_sound[KNOWN_SOUNDS]; -#endif - public: - SoundSystem(); - ~SoundSystem(); - void init(void); - void shutdown(void); - - void add(short event, const char* file); - int play(const char* fname); - int play(short event); -}; - -#endif diff --git a/edewm/Titlebar.cpp b/edewm/Titlebar.cpp deleted file mode 100644 index 8000724..0000000 --- a/edewm/Titlebar.cpp +++ /dev/null @@ -1,429 +0,0 @@ -/* - * $Id: Titlebar.cpp 1718 2006-07-29 13:26:19Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#include "Titlebar.h" -#include "Frame.h" -#include "debug.h" -#include -#include -#include -#include -#include - -#include "app.xpm" -Fl_Image app_img((const char**)app_xpm); - -#define MAX_OF 0.6f -#define MIN_OF 0.5f -#define RES_OF 0.1f -#define vv(x,y) fl_vertex(x,y) - -void draw_close(Fl_Color col) -{ - fl_rotate(45); - fl_color(col); - - vv(-0.9f,-0.12f); vv(-0.9f,0.12f); vv(0.9f,0.12f); vv(0.9f,-0.12f); fl_fill_stroke(FL_DARK3); - vv(-0.12f,-0.9f); vv(-0.12f,0.9f); vv(0.12f,0.9f); vv(0.12f,-0.9f); fl_fill_stroke(FL_DARK3); -} - -void draw_max(Fl_Color col) -{ - fl_color(col); - - vv(-MAX_OF, -MAX_OF); vv(MAX_OF, -MAX_OF); - vv(MAX_OF,-MAX_OF+0.4); vv(-MAX_OF,-MAX_OF+0.4); - fl_fill(); - - vv(MAX_OF,-MAX_OF); vv(MAX_OF,MAX_OF); - vv(-MAX_OF,MAX_OF); vv(-MAX_OF,-MAX_OF); - fl_stroke(); -} - -void draw_maximized(Fl_Color col) -{ - fl_color(col); - - vv(-MAX_OF+RES_OF, -MAX_OF+RES_OF); vv(MAX_OF-RES_OF, -MAX_OF+RES_OF); - vv(MAX_OF-RES_OF,-MAX_OF+RES_OF); vv(MAX_OF-RES_OF,MAX_OF-RES_OF); - vv(-MAX_OF+RES_OF,MAX_OF-RES_OF); vv(-MAX_OF+RES_OF,-MAX_OF+RES_OF); - fl_stroke(); - - vv(-MAX_OF+RES_OF+0.2f, -MAX_OF+RES_OF+0.2f); vv(MAX_OF-RES_OF-0.2f, -MAX_OF+RES_OF+0.2f); - vv(MAX_OF-RES_OF-0.2f,-MAX_OF+RES_OF+0.2f); vv(MAX_OF-RES_OF-0.2f,MAX_OF-RES_OF-0.2f); - vv(-MAX_OF+RES_OF+0.2f,MAX_OF-RES_OF-0.2f); vv(-MAX_OF+RES_OF+0.2f,-MAX_OF+RES_OF+0.2f); - fl_stroke(); -} - - -void draw_min(Fl_Color col) -{ - fl_color(col); - - vv(-MIN_OF, MIN_OF); vv(MIN_OF, MIN_OF); - vv(MIN_OF, MIN_OF+0.3f); vv(-MIN_OF, MIN_OF+0.3f); - fl_fill(); -} - -void close_cb(Fl_Widget*, void* t) -{ - Titlebar* tb = (Titlebar*)t; - assert(tb != NULL); - tb->on_close(); -} - -void maximize_cb(Fl_Widget* b, void* t) -{ - Titlebar* tb = (Titlebar*)t; - assert(tb != NULL); - tb->on_maximize(); -} - -void shade_cb(Fl_Widget*, void* t) -{ - Titlebar* tb = (Titlebar*)t; - assert(tb != NULL); - tb->on_shade(); -} - -void minimize_cb(Fl_Widget*, void* t) -{ - Titlebar* tb = (Titlebar*)t; - assert(tb != NULL); - tb->on_minimize(); -} - -void lower_cb(Fl_Widget*, void* t) -{ - Titlebar* tb = (Titlebar*)t; - assert(tb != NULL); - tb->on_lower(); -} - -TitlebarButton::TitlebarButton(int type) : - Fl_Button(0, 0, 0, 0, 0), - button_type(type), - pos(PLACE_RIGHT) -{ - focus_box(FL_NO_BOX); - box(FL_FLAT_BOX); - label_type(FL_SYMBOL_LABEL); - - switch(button_type) - { - case TITLEBAR_CLOSE_UP: - label("@xx"); - break; - case TITLEBAR_MAX_UP: - label("@mx"); - break; - case TITLEBAR_MIN_UP: - label("@ii"); - break; - } -} - -TitlebarButton::~TitlebarButton() -{ -} - -/* Place buttons on titlebar. The can be either - * PLACE_RIGHT (standard in many wm-s) or PLACE_RIGHT - */ -void TitlebarButton::place(int p) -{ - if(p != PLACE_LEFT && p != PLACE_RIGHT) - pos = PLACE_RIGHT; - else - pos = p; -} - -Titlebar::Titlebar(Frame* f, int x, int y, int w, int h, const char* l) : - Fl_Group(x, y, w, h, l), - win_x(0), - win_y(0), - win_x1(0), - win_y1(0), - curr_frame(f), - minb(TITLEBAR_MIN_UP), - maxb(TITLEBAR_MAX_UP), - closeb(TITLEBAR_CLOSE_UP), - label_box(new Fl_Box(0, 0, 0, 0)), - icon_box(new Fl_Box(0, 0, 0, 0)), - focus_color(FL_GRAY), - unfocus_color(FL_WHITE) -{ - assert(curr_frame != NULL); - - box(FL_FLAT_BOX); - - fl_add_symbol("xx", draw_close, 1); - fl_add_symbol("mx", draw_max, 1); - fl_add_symbol("mz", draw_maximized, 1); - fl_add_symbol("ii", draw_min, 1); - label_box->box(FL_FLAT_BOX); - label_box->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); - label_box->color(FL_GRAY); - - icon_box->image(app_img); - - title_menu = new Fl_Menu_(); - - /* XXX: any way this can be better ? - * When we change label of existing menu item, menu width will not be - * recalculated honoring size of that item. So we must initially fill - * them with blanks, which will keep longer labels fully visible. - */ - menu_max = title_menu->add(_("Maximize "), 0, maximize_cb, this); - menu_shade = title_menu->add(_("Shade "), 0, shade_cb, this); - menu_lower = title_menu->add(_("Lower "), 0, lower_cb, this); - menu_min = title_menu->add(_("Minimize "), 0, minimize_cb, this, FL_MENU_DIVIDER); - menu_close = title_menu->add(_("Close "), 0, close_cb, this); - - //closeb.place(PLACE_LEFT); - end(); - - closeb.callback(close_cb, this); - //minb.callback(minimize_cb, this); - minb.callback(shade_cb, this); - maxb.callback(maximize_cb, this); - - color(FL_GRAY); - //align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); - if(curr_frame->frame_type(FrameTypeDialog)) - { - minb.hide(); - maxb.hide(); - } -} - -Titlebar::~Titlebar() -{ -} - -#define PLACE_BUTTON(btn, leftx, rightx, mid, offset, sz) \ - if(btn.place() == PLACE_LEFT) \ - {\ - btn.resize(leftx, mid, sz, sz); \ - if(btn.visible()) \ - leftx += sz + offset; \ - }\ - if(btn.place() == PLACE_RIGHT) \ - {\ - btn.resize(rightx, mid, sz, sz); \ - if(btn.visible()) \ - rightx -= sz + offset; \ - } - -void Titlebar::layout(void) -{ - int initial_offset = 2; // distance from borders - int W = w() - box()->dx() - initial_offset; - int X = box()->dx() + initial_offset; - - int lsize = h() / 2 + 2; - int offset = 0; - int mid = 0; - int sz = h(); - - label_size(lsize); - - sz -= 4; // button width/height - mid = 2; - offset = 2; - - int lx = X + offset; // left x - int rx = W - sz - offset; // right x - - PLACE_BUTTON(closeb, lx, rx, mid, offset, sz) - PLACE_BUTTON(maxb, lx, rx, mid, offset, sz) - PLACE_BUTTON(minb, lx, rx, mid, offset, sz) - - //rx -= sz + offset; - //lx += sz + offset; - - if(icon_box->visible()) - { - icon_box->resize(lx, mid, sz, sz); - lx += sz + offset; - } - - lx += offset; - rx -= lx; - label_box->resize(lx, mid, rx, sz); - - fl_font(label_font(), label_size()); - // take a label from titlebar object - if(!label().empty()) - label_box->label(label()); - - Fl_Group::layout(); -} - -void Titlebar::focus(void) -{ - // TODO: add colors for label_box, buttons - color(focus_color); - redraw(); -} - -void Titlebar::unfocus(void) -{ - // TODO: add colors for label_box, buttons - color(unfocus_color); - redraw(); -} - -void Titlebar::on_close(void) -{ - assert(curr_frame != NULL); - curr_frame->close_kill(); -} - -void Titlebar::on_maximize(void) -{ - assert(curr_frame != NULL); - - if(curr_frame->state(FrameStateMaximized)) - { - curr_frame->restore(); - maxb.label("@mx"); - menu_max->label(_("Maximize")); - } - else - { - curr_frame->maximize(); - maxb.label("@mz"); - menu_max->label(_("UnMaximize")); - } -} - -void Titlebar::on_minimize(void) -{ - assert(curr_frame != NULL); - // TODO: not implemented -} - -void Titlebar::on_shade(void) -{ - assert(curr_frame != NULL); - - if(curr_frame->state(FrameStateShaded)) - { - curr_frame->unshade(); - menu_shade->label(_("Shade")); - } - else - { - curr_frame->shade(); - menu_shade->label(_("UnShade")); - } -} - -void Titlebar::on_lower(void) -{ - curr_frame->lower(); -} - -int Titlebar::handle(int event) -{ - // check if event is directed to our buttons - if(event == FL_PUSH || event == FL_RELEASE) - { - Fl_Widget* ch = 0; - for(int i = 0; i < children(); i++) - { - ch = child(i); - - // do not send event to label_box - if(label_box && ch == label_box) - continue; - - if(ch && Fl::event_inside(ch->x(), ch->y(), ch->w(), ch->h())) - { - ch->send(event); - return 1; - } - } - } - - // proceed to our events - switch(event) - { - case FL_PUSH: - ELOG("Titlebar FL_PUSH"); - - if(Fl::event_state(FL_BUTTON3)) - { - title_menu->popup(Fl::event_x_root(), Fl::event_y_root()); - title_menu->redraw(); - return 1; - } - - // prevent double click - if(Fl::event_is_click()) - curr_frame->raise(); - - win_x = Fl::event_x_root() - curr_frame->x(); - win_y = Fl::event_y_root() - curr_frame->y(); - return 1; - - case FL_DRAG: - ELOG("Titlebar FL_DRAG"); - // TODO: correct behaviour ??? - if(curr_frame->state(FrameStateMaximized)) - return 1; - - win_x1 = Fl::event_x_root() - win_x; - win_y1 = Fl::event_y_root() - win_y; - - if(!curr_frame->moving()) - { - curr_frame->move_start(); - - /* We can safely call grab_cursor() as many times - * as we want, since it have internal checks - * - * TODO: add XGrabServer() here - */ - curr_frame->set_cursor(CURSOR_MOVE); - curr_frame->grab_cursor(); - curr_frame->show_coordinates_window(); - } - - curr_frame->move_window(win_x1, win_y1); - curr_frame->update_coordinates_window(); - - return 1; - - case FL_RELEASE: - ELOG("Titlebar FL_RELEASE"); - if(curr_frame->moving()) - { - curr_frame->ungrab_cursor(); - curr_frame->set_cursor(CURSOR_DEFAULT); - curr_frame->move_end(); - curr_frame->hide_coordinates_window(); - } - return 1; - - case FL_ENTER: - ELOG("Titlebar::FL_ENTER"); - return 1; - case FL_LEAVE: - ELOG("Titlebar::FL_LEAVE"); - return 1; - default: - return Fl_Group::handle(event); - } - return 0; -} diff --git a/edewm/Titlebar.h b/edewm/Titlebar.h deleted file mode 100644 index 2deeb6c..0000000 --- a/edewm/Titlebar.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * $Id: Titlebar.h 1718 2006-07-29 13:26:19Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef __TITLEBAR_H__ -#define __TITLEBAR_H__ - -#include -#include -#include -#include -#include - -// TODO: remove this after themes are added -#define TITLEBAR_MAX_UP 1 -#define TITLEBAR_CLOSE_UP 2 -#define TITLEBAR_MIN_UP 3 - -#define PLACE_RIGHT 1 -#define PLACE_LEFT 2 - -class TitlebarButton : public Fl_Button -{ - private: - int button_type; - int pos; - public: - TitlebarButton(int type); - ~TitlebarButton(); - void place(int p); - int place(void) { return pos; } -}; - -class Frame; - -class Titlebar : public Fl_Group -{ - private: - int win_x, win_y, win_x1, win_y1; - Frame* curr_frame; - TitlebarButton minb; - TitlebarButton maxb; - TitlebarButton closeb; - Fl_Box* label_box; - Fl_Box* icon_box; - Fl_Color focus_color; - Fl_Color unfocus_color; - - Fl_Menu_* title_menu; - Fl_Widget* menu_max; - Fl_Widget* menu_min; - Fl_Widget* menu_close; - Fl_Widget* menu_shade; - Fl_Widget* menu_lower; - - public: - Titlebar(Frame* f, int x, int y, int w, int h, const char* l); - ~Titlebar(); - void layout(void); - int handle(int event); - void focus(void); - void unfocus(void); - - void on_close(void); - void on_maximize(void); - void on_minimize(void); - void on_shade(void); - void on_lower(void); -}; - -#endif diff --git a/edewm/Tracers.h b/edewm/Tracers.h deleted file mode 100644 index 12786b0..0000000 --- a/edewm/Tracers.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * $Id: Tracers.h 1671 2006-07-11 14:07:43Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef __TRACERS_H__ -#define __TRACERS_H__ - -#include "debug.h" - -#ifdef _DEBUG - class FunctionTracer - { - private: - const char* func; - public: - FunctionTracer(const char* f) : func(f) - { - if(func) - EPRINTF("Function [+]: \"%s\"\n", func); - } - - ~FunctionTracer() - { - if(func) - EPRINTF("Function [-]: \"%s\"\n", func); - } - }; - - #define TRACE_FUNCTION(name) FunctionTracer foo(name) -#else - #define TRACE_FUNCTION(name) (void)0 -#endif // _DEBUG - -#endif diff --git a/edewm/Utils.cpp b/edewm/Utils.cpp deleted file mode 100644 index 5818dbf..0000000 --- a/edewm/Utils.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - * $Id: Utils.cpp 1705 2006-07-23 22:31:56Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#include "Utils.h" -#include - -void SendMessage(Window win, Atom a, Atom l) -{ - XEvent ev; - long mask; - memset(&ev, 0, sizeof(ev)); - ev.xclient.type = ClientMessage; - ev.xclient.window = win; - ev.xclient.message_type = a; - ev.xclient.format = 32; - ev.xclient.data.l[0] = long(l); - ev.xclient.data.l[1] = long(fl_event_time); - mask = 0L; - XSendEvent(fl_display, win, False, mask, &ev); -} diff --git a/edewm/Utils.h b/edewm/Utils.h deleted file mode 100644 index 23576be..0000000 --- a/edewm/Utils.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * $Id: Utils.h 1705 2006-07-23 22:31:56Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef __UTILS_H__ -#define __UTILS_H__ - -#include - -void SendMessage(Window win, Atom a, Atom l); - -#endif // _UTILS_H_ diff --git a/edewm/Windowmanager.cpp b/edewm/Windowmanager.cpp deleted file mode 100644 index 5dc6b1f..0000000 --- a/edewm/Windowmanager.cpp +++ /dev/null @@ -1,733 +0,0 @@ -/* - * $Id: Windowmanager.cpp 1711 2006-07-25 09:51:50Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#include "Windowmanager.h" -#include "Atoms.h" -#include "Hints.h" -#include "Frame.h" -#include "../exset/exset.h" -#include "Tracers.h" -#include "Sound.h" -#include "debug.h" - -#include -#include -#include -#include - -#define WM_CONFIG_FILE "wmanager.conf" -#define EDE_CONFIG_FILE "ede.conf" - - -WindowManager* WindowManager::pinstance = NULL; -int x_errors; - -/* This is one of the most important part of wm and reflects - * current design. Wm will try to send all messages to frame itself, - * after trying to find it's ID in collected list. All further processing - * is left to that frame. Other messages will process wm, - * minimizing spreading events all over the code. - * I'am not in love with this decision; it's roots are from previous - * edewm code (the real roots are from icewm). - * - * Future major versions will probably have different design. - */ -int wm_event_handler(int e) -{ - if(fl_xevent.type == KeyPress) - e = FL_KEY; - if(!e) - { - Window window = fl_xevent.xany.window; - switch(fl_xevent.type) - { - case CirculateNotify: - case CirculateRequest: - case ConfigureNotify: - case ConfigureRequest: - case CreateNotify: - case GravityNotify: - /*case MapNotify:*/ - case MapRequest: - case ReparentNotify: - case UnmapNotify: - window = fl_xevent.xmaprequest.window; - break; - } - - FrameList::iterator last = WindowManager::instance()->window_list.end(); - for(FrameList::iterator it = WindowManager::instance()->window_list.begin(); it != last; ++it) - { - Frame* c = *it; - if(c->window() == window || fl_xid(c) == window) - { - //ELOG("wm_event_handler-> window found (%i), sending a message", i); - return c->handle(&fl_xevent); - } - } - - return WindowManager::instance()->handle(&fl_xevent); - } - else - return WindowManager::instance()->handle(e); -} - -int convert_align(int a) -{ - switch(a) - { - default: - case 0: break; - case 1: return FL_ALIGN_RIGHT; - case 2: return FL_ALIGN_CENTER; - } - return FL_ALIGN_LEFT; -} - -int xerror_handler(Display* d, XErrorEvent* e) -{ - if(e->request_code == X_ChangeWindowAttributes && - e->error_code == BadAccess && - e->resourceid == RootWindow(fl_display, DefaultScreen(fl_display))) - { - // force cleaning data - WindowManager::shutdown(); - Fl::fatal(_("Another window manager is running. You must exit it before running edewm.")); - } - - x_errors++; - - char buff[128]; - - EPRINTF("\n"); - XGetErrorDatabaseText(fl_display, "XlibMessage", "XError", "", buff, 128); - EPRINTF("%s: ", buff); - XGetErrorText(fl_display, e->error_code, buff, 128); - EPRINTF("%s \n", buff); - - XGetErrorDatabaseText(fl_display, "XlibMessage", "MajorCode", "%d", buff, 128); - EPRINTF(" "); - EPRINTF(buff, e->request_code); - - sprintf(buff, "%d", e->request_code); - XGetErrorDatabaseText(fl_display, "XRequest", buff, "%d", buff, 128); - EPRINTF(" (%s)\n", buff); - - XGetErrorDatabaseText(fl_display, "XlibMessage", "MinorCode", "%d", buff, 128); - EPRINTF(" "); - EPRINTF(buff, e->minor_code); - EPRINTF(" "); - XGetErrorDatabaseText(fl_display, "XlibMessage", "ResourceID", "%d", buff, 128); - EPRINTF(buff, e->resourceid); - - EPRINTF("\n"); - EPRINTF("\n"); - - return 0; -} - -bool ValidateDrawable(Drawable d) -{ - Window w; - int dummy; - unsigned int dummy_ui; - - XSync(fl_display, False); - x_errors = 0; - XGetGeometry(fl_display, d, &w, &dummy, &dummy, &dummy_ui, &dummy_ui, &dummy_ui, &dummy_ui); - XSync(fl_display, False); - - bool ret = (x_errors == 0 ? true : false); - x_errors = 0; - -/* - if(ret != true) - { - WindowManager::shutdown(); - assert(ret == true); - } -*/ - - return ret; -} - -WindowManager::WindowManager() : Fl_Window(0, 0, Fl::w(), Fl::h()), is_running(false) -{ - box(FL_NO_BOX); - ELOG("WindowManager constructor"); -} - -WindowManager::~WindowManager() -{ - ELOG("WindowManager destructor"); - - FrameList::iterator last = window_list.end(); - for(FrameList::iterator it = window_list.begin(); it != last; ++it) - { - Frame* f = *it; - delete f; - } - window_list.clear(); - - sound_system->shutdown(); - delete sound_system; - - delete wm_conf; - delete hint_stuff; - delete cur; -} - -WindowManager* WindowManager::instance(void) -{ - assert(WindowManager::pinstance != NULL); - return WindowManager::pinstance; -} - -void WindowManager::init(int argc, char** argv) -{ - if(WindowManager::pinstance != NULL) - return; - - WindowManager::pinstance = new WindowManager(); - WindowManager::pinstance->init_internals(); -} - -void WindowManager::shutdown(void) -{ - if(WindowManager::pinstance != NULL) - { - delete WindowManager::pinstance; - WindowManager::pinstance = NULL; - } -} - -void WindowManager::init_internals(void) -{ - ELOG("Starting window manager"); - wm_conf = new WindowManagerConfig; - - app_starting = false; - - // defaults, in case world goes down - wm_conf->title_active_color = fl_rgb(0,0,128); - wm_conf->title_active_color_text = fl_rgb(255,255,255); - wm_conf->title_normal_color = fl_rgb(192,192,192); - wm_conf->title_normal_color_text = fl_rgb(0,0,128); - wm_conf->title_label_align = FL_ALIGN_LEFT; - wm_conf->title_height = 20; - wm_conf->title_box_type = 0; - wm_conf->frame_do_opaque = false; - wm_conf->frame_animate = true; - wm_conf->frame_animate_speed = 15; - - fl_open_display(); - XSetErrorHandler(xerror_handler); - wm_area.set(0, 0, Fl::w(), Fl::h()); - - read_configuration(); - read_xset_configuration(); - - //register_protocols(); -#ifdef _DEBUG - InitAtoms(fl_display, atom_map); - register_events(); -#else - InitAtoms(fl_display); -#endif - - //cur = XCreateFontCursor(fl_display, XC_left_ptr); - //XDefineCursor(fl_display, RootWindow(fl_display, fl_screen), cur); - // load cursor - cur = new CursorHandler; - cur->load(X_CURSORS); - cur->set_root_cursor(); - - sound_system = new SoundSystem(); - sound_system->init(); - - sound_system->add(SOUND_MINIMIZE, "sounds/minimize.ogg"); - sound_system->add(SOUND_MAXIMIZE, "sounds/maximize.ogg"); - sound_system->add(SOUND_CLOSE, "sounds/close.ogg"); - sound_system->add(SOUND_RESTORE, "sounds/restore.ogg"); - sound_system->add(SOUND_SHADE, "sounds/shade.ogg"); - - // the world is starting here - show(); - register_protocols(); - - hint_stuff = new Hints; - hint_stuff->icccm_set_iconsizes(this); - - init_clients(); - Fl::add_handler(wm_event_handler); - XSync(fl_display, 0); - - is_running = true; -} - -// load current visible clients -void WindowManager::init_clients(void) -{ - Frame* frame = 0; - uint win_num; - Window w1, w2, *wins; - XWindowAttributes attr; - XQueryTree(fl_display, fl_xid(this), &w1, &w2, &wins, &win_num); - - // XXX: excluding root parent !!! - //for (uint i = 0; i < win_num-1; i++) - for (uint i = 0; i < win_num; i++) - { - XGetWindowAttributes(fl_display, wins[i], &attr); - if(!attr.override_redirect && attr.map_state == IsViewable) - { - if(!attr.screen) - { - ELOG("Screen not as window, skiping..."); - continue; - } - - if(ValidateDrawable(wins[i])) - frame = new Frame(wins[i], &attr); - } - else - ELOG("Skipping override_redirect window"); - } - XFree((void *)wins); -} - -// register type messages wm understainds -void WindowManager::register_protocols(void) -{ - ELOG("Loading protocols"); - SetSupported(root_win); -} - -void WindowManager::read_configuration(void) -{ - ELOG("Reading config"); - Fl_Config conf(fl_find_config_file(WM_CONFIG_FILE, 0)); - conf.set_section("TitleBar"); - conf.read("Active color", wm_conf->title_active_color, fl_rgb(0, 0, 128)); - conf.read("Normal color", wm_conf->title_normal_color, fl_rgb(192, 192, 192)); - conf.read("Active color text", wm_conf->title_active_color_text, fl_rgb(255, 255, 255)); - conf.read("Normal color text", wm_conf->title_normal_color_text, fl_rgb(0, 0, 128)); - conf.read("Box type", wm_conf->title_box_type, 0); - conf.read("Height", wm_conf->title_height, 20); - - int la; - conf.read("Text align", la, 0); - wm_conf->title_label_align = convert_align(la); - - conf.set_section("Resize"); - conf.read("Opaque resize", wm_conf->frame_do_opaque, false); - conf.read("Animate", wm_conf->frame_animate, true); - conf.read("Animate Speed", wm_conf->frame_animate_speed, 15); - - conf.set_section("Misc"); - conf.read("Use theme", wm_conf->use_theme); - - notify_clients(); -} - -void WindowManager::read_xset_configuration(void) -{ - Fl_Config conf(fl_find_config_file(EDE_CONFIG_FILE, 1)); - int val1, val2, val3; - Exset xset; - - conf.set_section("Mouse"); - conf.read("Accel", val1, 4); - conf.read("Thress",val2, 4); - xset.set_mouse(val1, val2); - - conf.set_section("Bell"); - conf.read("Volume", val1, 50); - conf.read("Pitch", val2, 440); - conf.read("Duration", val3, 200); - xset.set_bell(val1, val2, val3); - - conf.set_section("Keyboard"); - conf.read("Repeat", val1, 1); - conf.read("ClickVolume", val2, 50); - xset.set_keybd(val1, val2); - - conf.set_section("Screen"); - conf.read("Delay", val1, 15); - conf.read("Pattern",val2, 2); - xset.set_pattern(val1, val2); - - conf.read("CheckBlank", val1, 1); - xset.set_check_blank(val1); - - conf.read("Pattern", val1, 2); - xset.set_blank(val1); -} - -void WindowManager::notify_clients(void) -{ -#warning "TODO: implement WindowManager::notify_clients()" -} - -void WindowManager::show(void) -{ - if(!shown()) - { - create(); - /* Destroy efltk window, set RootWindow to our - * xid and redirect all messages to us, which - * will make us a window manager. - */ - XDestroyWindow(fl_display, Fl_X::i(this)->xid); - Fl_X::i(this)->xid = RootWindow(fl_display, fl_screen); - root_win = RootWindow(fl_display, fl_screen); - XSelectInput(fl_display, fl_xid(this), - SubstructureRedirectMask | - SubstructureNotifyMask | - ColormapChangeMask | - PropertyChangeMask | - ButtonPressMask | - ButtonReleaseMask | - EnterWindowMask | - LeaveWindowMask | - KeyPressMask | - KeyReleaseMask | - KeymapStateMask); - - ELOG("RootWindow ID set to xid"); - draw(); - } -} - -void WindowManager::draw(void) -{ - ELOG("RootWindow draw"); - // redraw root window - XClearWindow(fl_display, fl_xid(this)); -} - -void WindowManager::idle(void) -{ - //ELOG("Idle"); - FrameList::iterator last = remove_list.end(); - for(FrameList::iterator it = remove_list.begin(); it != last; ++it) - { - Frame* f = *it; - delete f; - } - remove_list.clear(); -} - -void WindowManager::exit(void) -{ - if(is_running) - is_running = false; -} - -const Cursor WindowManager::root_cursor(void) -{ - assert(cur != NULL); - return cur->root_cursor(); -} - -void WindowManager::set_cursor(Frame* f, CursorType t) -{ - assert(f != NULL); - cur->set_cursor(f, t); -/* - if(cur->cursor_shape_type() == FLTK_CURSORS) - cur->set_fltk_cursor(f, t); - else - cur->set_x_cursor(f, t); -*/ -} - -const CursorHandler* WindowManager::cursor_handler(void) -{ - assert(cur != NULL); - return cur; -} - -int WindowManager::handle(int event) -{ - Window window = fl_xevent.xany.window; - switch(event) - { - case FL_PUSH: - { - FrameList::iterator last = window_list.end(); - for(FrameList::iterator it = window_list.begin(); it != last; ++it) - { - Frame* f = *it; - if(f->window() == window || fl_xid(f) == window) - { - f->content_click(); - return 1; - } - } - - ELOG("FL_PUSH on root"); - return 0; - } - - case FL_SHORTCUT: - case FL_KEY: - - ELOG("FL_SHORCUT | FL_KEY"); - return 1; - case FL_MOUSEWHEEL: - XAllowEvents(fl_display, ReplayPointer, CurrentTime); - return 0; - } - return 0; -} - -int WindowManager::handle(XEvent* event) -{ - switch(event->type) - { - /* ClientMessage is only used for desktop handling - * and startup notifications. - */ - case ClientMessage: - { - ELOG("ClientMessage in wm"); - if(event->xclient.message_type == _XA_EDE_WM_STARTUP_NOTIFY) - { - Atom data = event->xclient.data.l[0]; - if(data == _XA_EDE_WM_APP_STARTING) - { - app_starting = true; - cur->set_root_cursor(CURSOR_WAIT); - } - } - return 1; - } - case MapRequest: - { - ELOG("MapRequest from wm"); - const XMapRequestEvent* e = &(fl_xevent.xmaprequest); - - XWindowAttributes attrs; - XGetWindowAttributes(fl_display, e->window, &attrs); - if(!attrs.override_redirect) - { - ELOG("--- map from wm ---"); - new Frame(e->window); - - if(app_starting) - { - cur->set_root_cursor(CURSOR_DEFAULT); - app_starting = false; - } - } - - return 1; - } - case ConfigureRequest: - { - ELOG("ConfigureRequest from wm"); - const XConfigureRequestEvent *e = &(fl_xevent.xconfigurerequest); - XConfigureWindow(fl_display, e->window, e->value_mask&~(CWSibling|CWStackMode), - (XWindowChanges*)&(e->x)); - return 1; - } - - default: - return 0; - } - return 0; -} - -/* Clear stack_list and window_list for those - * windows schedulied for removal. - * Expensive operation, so use it with care. - */ -void WindowManager::update_client_list(void) -{ - bool found = false; - - // first clear aot_list - FrameList::iterator last = aot_list.end(); - for(FrameList::iterator it = aot_list.begin(); it != last; ++it) - { - Frame* f = *it; - if(f->destroy_scheduled()) - { - // erase current and let 'it' point to next element - it = aot_list.erase(it); - found = true; - } - } - - // then clear stack_list - if(!found) - { - last = stack_list.end(); - for(FrameList::iterator it = stack_list.begin(); it != last; ++it) - { - Frame* f = *it; - if(f->destroy_scheduled()) - it = stack_list.erase(it); - } - } - - // then window_list - last = window_list.end(); - for(FrameList::iterator it = window_list.begin(); it != last; ++it) - { - Frame* f = *it; - if(f->destroy_scheduled()) - { - // TODO: do I need this ??? - remove_list.push_back(*it); - it = window_list.erase(it); - } - } -} - -/* Used by frames. - * Window manager will check position of last client and - * return possible next one - * - * Accepted values are: current frame width and height, and - * returned is position where it should be placed. - */ -bool WindowManager::query_best_position(int* x, int* y, int w, int h) -{ - const int offset = 20; - - if(window_list.size() <= 0) - return false; - - //Frame* f = window_list[window_list.size()-1]; - Frame* f = *(--window_list.end()); - if(!f) - return false; - - *x = f->x() + offset; - *y = f->y() + offset; - - // if w-h of frame are larger than area - // place them to apropriate corners - if((*x + w) > wm_area.w()) - *x = wm_area.x(); - if((*y + h) > wm_area.h()) - *y = wm_area.y(); - - return true; -} - -Frame* WindowManager::find_xid(Window win) -{ - FrameList::iterator last = window_list.end(); - for(FrameList::iterator it = window_list.begin(); it != last; ++it) - { - Frame* f = *it; - if(f->window() == win) - return f; - } - - return 0; -} - -void WindowManager::restack_windows(void) -{ - TRACE_FUNCTION("void WindowManager::restack_windows(void)"); - - Window* stack = new Window[aot_list.size() + stack_list.size()]; - FrameList::iterator it = aot_list.begin(); - FrameList::iterator last = aot_list.end(); - unsigned int i = 0; - - for(; it != last && i < aot_list.size(); ++it, i++) - stack[i] = fl_xid(*it); - - it = stack_list.begin(); - last = stack_list.end(); - - - for(; it != last && i < aot_list.size() + stack_list.size(); ++it, i++) - stack[i] = fl_xid(*it); - - XRestackWindows(fl_display, stack, stack_list.size()); - delete [] stack; -} - -void WindowManager::clear_focus_windows(void) -{ - if(aot_list.size() > 0) - { - FrameList::iterator it = aot_list.begin(); - FrameList::iterator last = aot_list.end(); - for(; it != last; ++it) - (*it)->unfocus(); - } - - FrameList::iterator it = stack_list.begin(); - FrameList::iterator last = stack_list.end(); - for(; it != last; ++it) - (*it)->unfocus(); -} - -void WindowManager::play_sound(short event) -{ - assert(sound_system != NULL); - sound_system->play(event); -} - - -#ifdef _DEBUG -void WindowManager::register_events(void) -{ - xevent_map[CirculateNotify] = "CirculateNotify"; - xevent_map[CirculateRequest] = "CirculateRequest"; - xevent_map[ConfigureNotify] = "ConfigureNotify"; - xevent_map[ConfigureRequest] = "ConfigureRequest"; - xevent_map[CreateNotify] = "CreateNotify"; - xevent_map[GravityNotify] = "GravityNotify"; - xevent_map[MapNotify] = "MapNotify"; - xevent_map[MapRequest] = "MapRequest"; - xevent_map[ReparentNotify] = "ReparentNotify"; - xevent_map[UnmapNotify] = "UnmapNotify"; - xevent_map[DestroyNotify] = "DestroyNotify"; - xevent_map[PropertyNotify] = "PropertyNotify"; - xevent_map[EnterNotify] = "EnterNotify"; - xevent_map[LeaveNotify] = "LeaveNotify"; - xevent_map[VisibilityNotify] = "VisibilityNotify"; - xevent_map[FocusIn] = "FocusIn"; - xevent_map[FocusOut] = "FocusOut"; - xevent_map[ClientMessage] = "ClientMessage"; - - efltkevent_map[FL_PUSH] = "FL_PUSH"; - efltkevent_map[FL_RELEASE] = "FL_RELEASE"; - efltkevent_map[FL_ENTER] = "FL_ENTER"; - efltkevent_map[FL_LEAVE] = "FL_LEAVE"; - efltkevent_map[FL_DRAG] = "FL_DRAG"; - efltkevent_map[FL_FOCUS] = "FL_FOCUS"; - efltkevent_map[FL_UNFOCUS] = "FL_UNFOCUS"; - efltkevent_map[FL_KEY] = "FL_KEY"; - efltkevent_map[FL_KEYUP] = "FL_KEYUP"; - efltkevent_map[FL_MOVE] = "FL_MOVE"; - efltkevent_map[FL_SHORTCUT] = "FL_SHORTCUT"; - efltkevent_map[FL_ACTIVATE] = "FL_ACTIVATE"; - efltkevent_map[FL_DEACTIVATE]= "FL_DEACTIVATE"; - efltkevent_map[FL_SHOW] = "FL_SHOW"; - efltkevent_map[FL_HIDE] = "FL_HIDE"; - efltkevent_map[FL_MOUSEWHEEL]= "FL_MOUSEWHEEL"; - efltkevent_map[FL_PASTE] = "FL_PASTE"; - efltkevent_map[FL_DND_ENTER] = "FL_DND_ENTER"; - efltkevent_map[FL_DND_DRAG] = "FL_DND_DRAG"; - efltkevent_map[FL_DND_LEAVE] = "FL_DND_LEAVE"; - efltkevent_map[FL_DND_RELEASE] = "FL_DND_RELEASE"; -} -#endif diff --git a/edewm/Windowmanager.h b/edewm/Windowmanager.h deleted file mode 100644 index 15decd1..0000000 --- a/edewm/Windowmanager.h +++ /dev/null @@ -1,165 +0,0 @@ -/* - * $Id: Windowmanager.h 1711 2006-07-25 09:51:50Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef _WINDOWMANAGER_H_ -#define _WINDOWMANAGER_H_ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "Cursor.h" - -#ifdef _DEBUG -#include -#endif - -#include - -/* -class Frame_List : public Fl_Ptr_List { -public: - Frame_List() : Fl_Ptr_List() { } - - void append(Frame *item) { Fl_Ptr_List::append((void *)item); } - void prepend(Frame *item) { Fl_Ptr_List::prepend((void *)item); } - void insert(uint pos, Frame *item) { Fl_Ptr_List::insert(pos, (void *)item); } - void replace(uint pos, Frame *item) { Fl_Ptr_List::replace(pos, (void *)item); } - void remove(uint pos) { Fl_Ptr_List::remove(pos); } - bool remove(Frame *item) { return Fl_Ptr_List::remove((void *)item); } - int index_of(const Frame *w) const { return Fl_Ptr_List::index_of((void*)w); } - Frame *item(uint index) const { return (Frame*)Fl_Ptr_List::item(index); } - - Frame **data() { return (Frame**)items; } - - Frame *operator [](uint ind) const { return (Frame *)items[ind]; } -}; -*/ - -struct WindowManagerConfig -{ - Fl_Color title_active_color; - Fl_Color title_active_color_text; - Fl_Color title_normal_color; - Fl_Color title_normal_color_text; - - int title_label_align; - int title_height; - int title_box_type; - - bool frame_do_opaque; - bool frame_animate; - int frame_animate_speed; - - bool use_theme; -}; - - -// The WindowManager class looks like a window to efltk but is actually the -// screen's root window. This is done by setting xid to "show" it -// rather than have efltk create the window. Class handles all root -// windows X events - -struct Hints; -class Frame; -class CursorHandler; -class SoundSystem; -typedef std::list FrameList; - -class WindowManager : public Fl_Window -{ - private: - bool is_running; - static WindowManager* pinstance; - WindowManagerConfig* wm_conf; - Fl_Rect wm_area; - Window root_win; - Hints* hint_stuff; - - CursorHandler* cur; - SoundSystem* sound_system; - - bool app_starting; - - WindowManager(); - ~WindowManager(); - WindowManager(const WindowManager&); - WindowManager& operator=(WindowManager&); - void register_protocols(void); - void init_internals(void); - void init_clients(void); - - public: - static void init(int argc, char** argv); - static void shutdown(void); - static WindowManager* instance(); - void read_configuration(void); - void read_xset_configuration(void); - void notify_clients(void); - void show(void); - void hide(void) { } // prevent efltk from root window hiding - void draw(void); - int handle(int event); - int handle(XEvent* e); - void update_client_list(void); - bool running(void) { return is_running; } - Window root_window(void) { return root_win; } - void idle(void); - Hints* hints(void) { return hint_stuff; } - void exit(void); - int x(void) { return wm_area.x(); } - int y(void) { return wm_area.y(); } - int w(void) { return wm_area.w(); } - int h(void) { return wm_area.h(); } - - bool query_best_position(int* x, int* y, int w, int h); - Frame* find_xid(Window win); - void restack_windows(void); - void clear_focus_windows(void); - - void play_sound(short event); - - const Cursor root_cursor(void); - const CursorHandler* cursor_handler(void); - void set_cursor(Frame* f, CursorType t); - - //FrameList window_list; - //FrameList remove_list; - - // list of mapped windows (it is not changed excep window is destroyed) - FrameList window_list; - // stacking list of ordinary windows - FrameList stack_list; - // list of destroyed windows (cleared in WindowManager::idle() phase) - FrameList remove_list; - // list of always on top windows (transients etc.) - FrameList aot_list; - - -#ifdef _DEBUG - std::map atom_map; - std::map xevent_map; - std::map efltkevent_map; - - void register_events(void); -#endif -}; - - -bool ValidateDrawable(Drawable d); - -#endif diff --git a/edewm/app.xpm b/edewm/app.xpm deleted file mode 100644 index 2c5f3d9..0000000 --- a/edewm/app.xpm +++ /dev/null @@ -1,21 +0,0 @@ -/* XPM */ -static char * app_xpm[] = { -"16 16 2 1", -" c None", -". c #FF0000", -" ", -" ", -" ", -" .... . ", -" .... . ", -" .... . ", -" .... . ", -" ... . ", -" . .. ", -" . .... ", -" . .... ", -" . .... ", -" . .... ", -" . .... ", -" ", -" "}; diff --git a/edewm/debug.cpp b/edewm/debug.cpp deleted file mode 100644 index 2c53fc3..0000000 --- a/edewm/debug.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - * $Id: debug.cpp 1671 2006-07-11 14:07:43Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#include "debug.h" -#include -#include - -#define OUT_TYPE stdout - -void edewm_log(const char* str, ...) -{ -#ifdef _DEBUG - fprintf(OUT_TYPE, "wm: "); - va_list args; - va_start(args, str); - vfprintf(OUT_TYPE, str, args); - fprintf(OUT_TYPE, "\n"); - fflush(OUT_TYPE); -#endif -} -void edewm_warning(const char* str, ...) -{ -#ifdef _DEBUG - fprintf(OUT_TYPE, "wm (warning): "); - va_list args; - va_start(args, str); - vfprintf(OUT_TYPE, str, args); - fprintf(OUT_TYPE, "\n"); - fflush(OUT_TYPE); -#endif -} - -void edewm_fatal(const char* str, ...) -{ -#ifdef _DEBUG - fprintf(OUT_TYPE, "!!! wm (fatal): "); - va_list args; - va_start(args, str); - vfprintf(OUT_TYPE, str, args); - fprintf(OUT_TYPE, "\n"); - fflush(OUT_TYPE); -#endif -} - -void edewm_printf(const char* str, ...) -{ -#ifdef _DEBUG - va_list args; - va_start(args, str); - vfprintf(OUT_TYPE, str, args); - fflush(OUT_TYPE); -#endif -} diff --git a/edewm/debug.h b/edewm/debug.h deleted file mode 100644 index 8a64bac..0000000 --- a/edewm/debug.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * $Id: debug.h 1671 2006-07-11 14:07:43Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#ifndef __DEBUG_H__ -#define __DEBUG_H__ - -void edewm_log(const char* str, ...); -void edewm_printf(const char* str, ...); -void edewm_warning(const char* str, ...); -void edewm_fatal(const char* str, ...); - -#define ELOG edewm_log -#define EWARNING edewm_warning -#define EFATAL edewm_fatal -#define EPRINTF edewm_printf - -#endif diff --git a/edewm/locale/fi.po b/edewm/locale/fi.po deleted file mode 100644 index ffb9e61..0000000 --- a/edewm/locale/fi.po +++ /dev/null @@ -1,89 +0,0 @@ -# Finnish translation of edewm. -# Copyright (C) 2002 THE edewm'S COPYRIGHT HOLDER -# This file is distributed under the same license as the edewm package. -# Mikko L. , 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: edewm 1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-02-04 12:33+0100\n" -"PO-Revision-Date: 2002-09-16 11:07+0300\n" -"Last-Translator: Mikko L. \n" -"Language-Team: Finnish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-15\n" -"Content-Transfer-Encoding: 8bit\n" - -#: Desktop.cpp:138 Desktop.cpp:180 -#, c-format -msgid "Workspace %d" -msgstr "Työpöytä %d" - -#: Frame.cpp:106 -msgid "Untitled" -msgstr "Nimetön" - -#: Frame.cpp:938 -#, c-format -msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " -msgstr "" - -#: Titlebar.cpp:215 -msgid "Sticky" -msgstr "Kiinteä" - -#: Titlebar.cpp:275 Titlebar.cpp:320 -msgid "Set size" -msgstr "" - -#: Titlebar.cpp:276 -msgid "Set size to window:" -msgstr "" - -#: Titlebar.cpp:285 -msgid "width:" -msgstr "" - -#: Titlebar.cpp:287 -msgid "height:" -msgstr "" - -#: Titlebar.cpp:291 -msgid "&OK" -msgstr "" - -#: Titlebar.cpp:294 -msgid "&Cancel" -msgstr "" - -#: Titlebar.cpp:318 Titlebar.cpp:331 -msgid "Maximize" -msgstr "Suurenna" - -#: Titlebar.cpp:319 -msgid "Minimize" -msgstr "Pienennä" - -#: Titlebar.cpp:321 -msgid "To Desktop" -msgstr "Työpöydälle:" - -#: Titlebar.cpp:322 -msgid "Kill" -msgstr "Tapa" - -#: Titlebar.cpp:323 -msgid "Close" -msgstr "Sulje" - -#: Titlebar.cpp:330 -msgid "Restore" -msgstr "Palauta" - -#: Windowmanager.cpp:90 -#, c-format -msgid "Another window manager is running. You must exit it before running %s." -msgstr "" -"Toinen ikkunointi järjestelmä käynnissä. Sinun täytyy lopettaa se ennen kuin " -"voit ajaa: %s" diff --git a/edewm/locale/hu.po b/edewm/locale/hu.po deleted file mode 100644 index 2984a51..0000000 --- a/edewm/locale/hu.po +++ /dev/null @@ -1,85 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2005-02-09 11:21+0100\n" -"Last-Translator: Nemeth Otto \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: Desktop.cpp:138 -#: Desktop.cpp:180 -#, c-format -msgid "Workspace %d" -msgstr "Munkaterület %d" - -#: Frame.cpp:106 -msgid "Untitled" -msgstr "Névtelen" - -#: Frame.cpp:938 -#, c-format -msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " -msgstr "EDEWM: BelsÅ‘ hiba, restacking (%d != %d)! Kilépés... " - -#: Titlebar.cpp:215 -msgid "Sticky" -msgstr "Ragadós" - -#: Titlebar.cpp:275 -#: Titlebar.cpp:320 -msgid "Set size" -msgstr "Méret beállítása" - -#: Titlebar.cpp:276 -msgid "Set size to window:" -msgstr "Ablakméret beállítása:" - -#: Titlebar.cpp:285 -msgid "width:" -msgstr "szél.:" - -#: Titlebar.cpp:287 -msgid "height:" -msgstr "mag.:" - -#: Titlebar.cpp:291 -msgid "&OK" -msgstr "&OK" - -#: Titlebar.cpp:294 -msgid "&Cancel" -msgstr "Mégs&em" - -#: Titlebar.cpp:318 -#: Titlebar.cpp:331 -msgid "Maximize" -msgstr "Maximalizálás" - -#: Titlebar.cpp:319 -msgid "Minimize" -msgstr "Minimalizálás" - -#: Titlebar.cpp:321 -msgid "To Desktop" -msgstr "Munkaterületre" - -#: Titlebar.cpp:322 -msgid "Kill" -msgstr "Kilövés" - -#: Titlebar.cpp:323 -msgid "Close" -msgstr "Bezárás" - -#: Titlebar.cpp:330 -msgid "Restore" -msgstr "Visszaállítás" - -#: Windowmanager.cpp:90 -#, c-format -msgid "Another window manager is running. You must exit it before running %s." -msgstr "Egy másik ablakkezelÅ‘ fut. Ki kell lépni belÅ‘le mielÅ‘tt ezt futtatod: %s." - diff --git a/edewm/locale/id.po b/edewm/locale/id.po deleted file mode 100644 index ad79606..0000000 --- a/edewm/locale/id.po +++ /dev/null @@ -1,89 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: edewm 1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-02-04 12:33+0100\n" -"PO-Revision-Date: 202-11-29 14:20+0700\n" -"Last-Translator: Bambang Purnomosidi D. P. \n" -"Language-Team: id \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-2\n" -"Content-Transfer-Encoding: 8bit\n" - -#: Desktop.cpp:138 Desktop.cpp:180 -#, c-format -msgid "Workspace %d" -msgstr "Ruangkerja %d" - -#: Frame.cpp:106 -msgid "Untitled" -msgstr "Tanpa judul" - -#: Frame.cpp:938 -#, c-format -msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " -msgstr "" - -#: Titlebar.cpp:215 -msgid "Sticky" -msgstr "Sticky" - -#: Titlebar.cpp:275 Titlebar.cpp:320 -msgid "Set size" -msgstr "" - -#: Titlebar.cpp:276 -msgid "Set size to window:" -msgstr "" - -#: Titlebar.cpp:285 -msgid "width:" -msgstr "" - -#: Titlebar.cpp:287 -msgid "height:" -msgstr "" - -#: Titlebar.cpp:291 -msgid "&OK" -msgstr "" - -#: Titlebar.cpp:294 -msgid "&Cancel" -msgstr "" - -#: Titlebar.cpp:318 Titlebar.cpp:331 -msgid "Maximize" -msgstr "Maksimalkan" - -#: Titlebar.cpp:319 -msgid "Minimize" -msgstr "Minimalkan" - -#: Titlebar.cpp:321 -msgid "To Desktop" -msgstr "Ke Desktop" - -#: Titlebar.cpp:322 -msgid "Kill" -msgstr "" - -#: Titlebar.cpp:323 -msgid "Close" -msgstr "Tutup" - -#: Titlebar.cpp:330 -msgid "Restore" -msgstr "Kembalikan" - -#: Windowmanager.cpp:90 -#, c-format -msgid "Another window manager is running. You must exit it before running %s." -msgstr "" -"Window manager lain sedang berjalan. Anda harus menghentikannya sebelum " -"menjalankan %s." diff --git a/edewm/locale/messages.po.default b/edewm/locale/messages.po.default deleted file mode 100644 index c33a66d..0000000 --- a/edewm/locale/messages.po.default +++ /dev/null @@ -1,63 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#: Desktop.cpp:233 Windowmanager.cpp:97 -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2002-09-16 10:58+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: Desktop.cpp:247 -#, c-format -msgid "Workspace %d" -msgstr "" - - - -#: Frame.cpp:134 main.cpp:51 -msgid "Untitled" -msgstr "" - - - -#: Titlebar.cpp:211 -msgid "Sticky" -msgstr "" - -#: Titlebar.cpp:247 Titlebar.cpp:257 -msgid "Maximize" -msgstr "" - -#: Titlebar.cpp:248 -msgid "Minimize" -msgstr "" - -#: Titlebar.cpp:249 -msgid "To Desktop" -msgstr "" - -#: Titlebar.cpp:250 -msgid "Close" -msgstr "" - -#: Titlebar.cpp:272 -msgid "Kill" -msgstr "" - -#: Titlebar.cpp:256 -msgid "Restore" -msgstr "" - -#: Windowmanager.cpp:88 -#, c-format -msgid "Another window manager is running. You must exit it before running %s." -msgstr "" diff --git a/edewm/locale/messages.pot b/edewm/locale/messages.pot deleted file mode 100644 index 9512350..0000000 --- a/edewm/locale/messages.pot +++ /dev/null @@ -1,88 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-02-04 12:33+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: Desktop.cpp:138 Desktop.cpp:180 -#, c-format -msgid "Workspace %d" -msgstr "" - -#: Frame.cpp:106 -msgid "Untitled" -msgstr "" - -#: Frame.cpp:938 -#, c-format -msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " -msgstr "" - -#: Titlebar.cpp:215 -msgid "Sticky" -msgstr "" - -#: Titlebar.cpp:275 Titlebar.cpp:320 -msgid "Set size" -msgstr "" - -#: Titlebar.cpp:276 -msgid "Set size to window:" -msgstr "" - -#: Titlebar.cpp:285 -msgid "width:" -msgstr "" - -#: Titlebar.cpp:287 -msgid "height:" -msgstr "" - -#: Titlebar.cpp:291 -msgid "&OK" -msgstr "" - -#: Titlebar.cpp:294 -msgid "&Cancel" -msgstr "" - -#: Titlebar.cpp:318 Titlebar.cpp:331 -msgid "Maximize" -msgstr "" - -#: Titlebar.cpp:319 -msgid "Minimize" -msgstr "" - -#: Titlebar.cpp:321 -msgid "To Desktop" -msgstr "" - -#: Titlebar.cpp:322 -msgid "Kill" -msgstr "" - -#: Titlebar.cpp:323 -msgid "Close" -msgstr "" - -#: Titlebar.cpp:330 -msgid "Restore" -msgstr "" - -#: Windowmanager.cpp:90 -#, c-format -msgid "Another window manager is running. You must exit it before running %s." -msgstr "" diff --git a/edewm/locale/ru.po b/edewm/locale/ru.po deleted file mode 100644 index b10b539..0000000 --- a/edewm/locale/ru.po +++ /dev/null @@ -1,90 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-02-04 12:33+0100\n" -"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" -"Last-Translator: aabbvv \n" -"Language-Team: RUSSIAN \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=koi8-r\n" -"Content-Transfer-Encoding: 8bit\n" - -#: Desktop.cpp:138 Desktop.cpp:180 -#, c-format -msgid "Workspace %d" -msgstr "òÁÂÏÞÉÊ ÓÔÏÌ %d" - -#: Frame.cpp:106 -msgid "Untitled" -msgstr "îÅÐÏÉÍÅÎÏ×ÁÎÎÙÊ" - -#: Frame.cpp:938 -#, c-format -msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " -msgstr "" - -#: Titlebar.cpp:215 -msgid "Sticky" -msgstr "÷ÓÅ ÓÒÁÚÕ" - -#: Titlebar.cpp:275 Titlebar.cpp:320 -msgid "Set size" -msgstr "" - -#: Titlebar.cpp:276 -msgid "Set size to window:" -msgstr "" - -#: Titlebar.cpp:285 -msgid "width:" -msgstr "" - -#: Titlebar.cpp:287 -msgid "height:" -msgstr "" - -#: Titlebar.cpp:291 -msgid "&OK" -msgstr "" - -#: Titlebar.cpp:294 -msgid "&Cancel" -msgstr "" - -#: Titlebar.cpp:318 Titlebar.cpp:331 -msgid "Maximize" -msgstr "òÁÚ×ÅÒÎÕÔØ" - -#: Titlebar.cpp:319 -msgid "Minimize" -msgstr "ó×ÅÒÎÕÔØ" - -#: Titlebar.cpp:321 -msgid "To Desktop" -msgstr "îÁ ÒÁÂÏÞÉÊ ÓÔÏÌ" - -#: Titlebar.cpp:322 -msgid "Kill" -msgstr "" - -#: Titlebar.cpp:323 -msgid "Close" -msgstr "úÁËÒÙÔØ" - -#: Titlebar.cpp:330 -msgid "Restore" -msgstr "÷ÏÓÓÔÁÎÏ×ÉÔØ" - -#: Windowmanager.cpp:90 -#, c-format -msgid "Another window manager is running. You must exit it before running %s." -msgstr "" -"úÁÐÕÝÅÎ ÄÒÕÇÏÊ ÏËÏÎÎÙÊ ÍÅÎÅÄÖÅÒ. îÅÏÂÈÏÄÉÍÏ ×ÙÊÔÉ ÉÈ ÎÅÇÏ ÐÅÒÅ ÔÅÍ ËÁË " -"ÚÁÐÕÓÔÉÔØ %s." diff --git a/edewm/locale/sk.po b/edewm/locale/sk.po deleted file mode 100644 index d44ddd7..0000000 --- a/edewm/locale/sk.po +++ /dev/null @@ -1,87 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: edewm 1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-02-04 12:33+0100\n" -"PO-Revision-Date: 2002-04-21 14:50+0200\n" -"Last-Translator: Martin Pekar \n" -"Language-Team: Slovak \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: Desktop.cpp:138 Desktop.cpp:180 -#, c-format -msgid "Workspace %d" -msgstr "Plocha %d" - -#: Frame.cpp:106 -msgid "Untitled" -msgstr "Bez názvu" - -#: Frame.cpp:938 -#, c-format -msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " -msgstr "" - -#: Titlebar.cpp:215 -msgid "Sticky" -msgstr "Lepkavý" - -#: Titlebar.cpp:275 Titlebar.cpp:320 -msgid "Set size" -msgstr "" - -#: Titlebar.cpp:276 -msgid "Set size to window:" -msgstr "" - -#: Titlebar.cpp:285 -msgid "width:" -msgstr "" - -#: Titlebar.cpp:287 -msgid "height:" -msgstr "" - -#: Titlebar.cpp:291 -msgid "&OK" -msgstr "" - -#: Titlebar.cpp:294 -msgid "&Cancel" -msgstr "" - -#: Titlebar.cpp:318 Titlebar.cpp:331 -msgid "Maximize" -msgstr "MaximalizovaÅ¥" - -#: Titlebar.cpp:319 -msgid "Minimize" -msgstr "MinimalizovaÅ¥" - -#: Titlebar.cpp:321 -msgid "To Desktop" -msgstr "Na plochu" - -#: Titlebar.cpp:322 -msgid "Kill" -msgstr "UkonÄiÅ¥" - -#: Titlebar.cpp:323 -msgid "Close" -msgstr "ZavrieÅ¥" - -#: Titlebar.cpp:330 -msgid "Restore" -msgstr "ObnoviÅ¥" - -#: Windowmanager.cpp:90 -#, c-format -msgid "Another window manager is running. You must exit it before running %s." -msgstr "" -"Práve beží už iný manažér okien. Musíte ho ukonÄiÅ¥ a chcete spustiÅ¥ %s." diff --git a/edewm/locale/sr.po b/edewm/locale/sr.po deleted file mode 100644 index dd8865c..0000000 --- a/edewm/locale/sr.po +++ /dev/null @@ -1,87 +0,0 @@ -# EDEWM - Prevod na srpski jezik -# Copyright (C) 2002 EDE Team -# Dejan Lekic Dejan Lekic , 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: EDEWM 0.1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-02-04 12:33+0100\n" -"PO-Revision-Date: 2002-11-21 08:26+0100\n" -"Last-Translator: Dejan Lekic \n" -"Language-Team: LINUKS.org T.T. \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: Desktop.cpp:138 Desktop.cpp:180 -#, c-format -msgid "Workspace %d" -msgstr "Радни проÑтор %d" - -#: Frame.cpp:106 -msgid "Untitled" -msgstr "Ðеименован" - -#: Frame.cpp:938 -#, c-format -msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " -msgstr "" - -#: Titlebar.cpp:215 -msgid "Sticky" -msgstr "Стики" - -#: Titlebar.cpp:275 Titlebar.cpp:320 -msgid "Set size" -msgstr "" - -#: Titlebar.cpp:276 -msgid "Set size to window:" -msgstr "" - -#: Titlebar.cpp:285 -msgid "width:" -msgstr "" - -#: Titlebar.cpp:287 -msgid "height:" -msgstr "" - -#: Titlebar.cpp:291 -msgid "&OK" -msgstr "" - -#: Titlebar.cpp:294 -msgid "&Cancel" -msgstr "" - -#: Titlebar.cpp:318 Titlebar.cpp:331 -msgid "Maximize" -msgstr "МакÑимизуј" - -#: Titlebar.cpp:319 -msgid "Minimize" -msgstr "Минимизуј" - -#: Titlebar.cpp:321 -msgid "To Desktop" -msgstr "Ðа деÑктоп" - -#: Titlebar.cpp:322 -msgid "Kill" -msgstr "" - -#: Titlebar.cpp:323 -msgid "Close" -msgstr "Затвори" - -#: Titlebar.cpp:330 -msgid "Restore" -msgstr "Врати" - -#: Windowmanager.cpp:90 -#, c-format -msgid "Another window manager is running. You must exit it before running %s." -msgstr "" -"Други менаџер прозора је активан. Мораћете га угаÑити пре покретања %s." diff --git a/edewm/main.cpp b/edewm/main.cpp deleted file mode 100644 index 0be914e..0000000 --- a/edewm/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - * $Id: main.cpp 1671 2006-07-11 14:07:43Z karijes $ - * - * Edewm, window manager - * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2000-2006 EDE Authors. - * - * This program is licenced under terms of the - * GNU General Public Licence version 2 or newer. - * See COPYING for details. - */ - -#include "Windowmanager.h" -#include "debug.h" -//#include - -#include -#include - -#include -#include -#include -#include - -bool got_signal = false; - - -void exit_signal(int signum) -{ - EWARNING("* Exiting (got signal %d) *", signum); - got_signal = true; -} - -int main(int argc, char ** argv) -{ - signal(SIGTERM, exit_signal); - signal(SIGKILL, exit_signal); - signal(SIGINT, exit_signal); - - Fl::args(argc, argv); - //fl_init_locale_support("edewm", PREFIX"/share/locale"); - - WindowManager::init(argc, argv); - Fl_Style::load_theme(); - - while(!got_signal && WindowManager::instance()->running()) - { - Fl::wait(); - WindowManager::instance()->idle(); - } - - WindowManager::shutdown(); - return 0; -} diff --git a/edewm/mask.xpm b/edewm/mask.xpm deleted file mode 100644 index c8a9cae..0000000 --- a/edewm/mask.xpm +++ /dev/null @@ -1,15 +0,0 @@ -/* XPM */ -static char * mask_xpm[] = { -"10 10 2 1", -" c None", -". c #000000", -"........ ", -"...... ", -"..... ", -".... ", -"... ", -".. ", -". ", -". ", -" ", -" "}; diff --git a/edewm/tests/basic_moveresize.cpp b/edewm/tests/basic_moveresize.cpp deleted file mode 100644 index 01ce29f..0000000 --- a/edewm/tests/basic_moveresize.cpp +++ /dev/null @@ -1,95 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#define MRSIZE 2 - -void cb_move_left(Fl_Widget*, void* ww) -{ - Fl_Window* win = (Fl_Window*) ww; - printf("move left(before) x: %i y: %i\n", win->x(), win->y()); - win->position(win->x() - MRSIZE, win->y()); - printf("move left(after) x: %i y: %i\n", win->x(), win->y()); -} - -void cb_move_right(Fl_Widget*, void* ww) -{ - Fl_Window* win = (Fl_Window*) ww; - printf("move right(before) x: %i y: %i\n", win->x(), win->y()); - win->position(win->x() + MRSIZE, win->y()); - printf("move right(after) x: %i y: %i\n", win->x(), win->y()); -} - -void cb_move_up(Fl_Widget*, void* ww) -{ - Fl_Window* win = (Fl_Window*) ww; - printf("move up(before) x: %i y: %i\n", win->x(), win->y()); - win->position(win->x(), win->y() - MRSIZE); - printf("move up(after) x: %i y: %i\n", win->x(), win->y()); -} - -void cb_move_down(Fl_Widget*, void* ww) -{ - Fl_Window* win = (Fl_Window*) ww; - printf("move down(before) x: %i y: %i\n", win->x(), win->y()); - win->position(win->x(), win->y() + MRSIZE); - printf("move down(after) x: %i y: %i\n", win->x(), win->y()); -} - - -int main (int argc, char **argv) -{ - Fl_Window* win = new Fl_Window(300, 290, "Basic Window Operations"); - win->shortcut(0xff1b); - - Fl_Box* bbb = new Fl_Box(10, 10, 280, 50, "Below buttons should apply changes to this window"); - bbb->align(FL_ALIGN_INSIDE|FL_ALIGN_WRAP); - - Fl_Group* move_group = new Fl_Group(10, 85, 280, 75, "Move"); - move_group->box(FL_ENGRAVED_BOX); - move_group->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); - - Fl_Button* move_up = new Fl_Button(130, 10, 25, 25, "^"); - move_up->callback(cb_move_up, win); - //move_left->label_type(FL_SYMBOL_LABEL); - - Fl_Button* move_down = new Fl_Button(130, 35, 25, 25, "v"); - move_down->callback(cb_move_down, win); - //move_right->label_type(FL_SYMBOL_LABEL); - - Fl_Button* move_left = new Fl_Button(105, 35, 25, 25, "<"); - move_left->callback(cb_move_left, win); - //move_up->label_type(FL_SYMBOL_LABEL); - - Fl_Button* move_right = new Fl_Button(155, 35, 25, 25, ">"); - move_right->callback(cb_move_right, win); - //move_down->label_type(FL_SYMBOL_LABEL); - - move_group->end(); - - - Fl_Group* resize_group = new Fl_Group(10, 190, 280, 75, "Resize"); - resize_group->box(FL_ENGRAVED_BOX); - resize_group->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); - - Fl_Button* resize_up = new Fl_Button(130, 10, 25, 25, "^"); - //resize_left->label_type(FL_SYMBOL_LABEL); - - Fl_Button* resize_down = new Fl_Button(130, 35, 25, 25, "v"); - //resize_right->label_type(FL_SYMBOL_LABEL); - - Fl_Button* resize_left = new Fl_Button(105, 35, 25, 25, "<"); - //resize_up->label_type(FL_SYMBOL_LABEL); - - Fl_Button* resize_right = new Fl_Button(155, 35, 25, 25, ">"); - //resize_down->label_type(FL_SYMBOL_LABEL); - - resize_group->end(); - - win->end(); - win->show(argc, argv); - return Fl::run(); -} diff --git a/edewm/tests/basic_moveresize.fld b/edewm/tests/basic_moveresize.fld deleted file mode 100644 index d7dd61c..0000000 --- a/edewm/tests/basic_moveresize.fld +++ /dev/null @@ -1,61 +0,0 @@ -# data file for the eFLTK User Interface Designer (eFLUID) -version 2.0003 -header_name {.h} -code_name {.cpp} -gridx 5 -gridy 5 -snap 3 -Function {} {open -} { - Fl_Window {} { - label {Basic Window Operations} open - xywh {361 170 300 290} resizable visible - } { - Fl_Box {} { - label {Below buttons should apply changes to this window} - xywh {10 10 280 50} align FL_ALIGN_INSIDE|FL_ALIGN_WRAP - } - Fl_Group {} { - label Move open - xywh {10 85 280 75} align FL_ALIGN_TOP|FL_ALIGN_LEFT box ENGRAVED_BOX - } { - Fl_Button {} { - label {@<} - xywh {130 10 25 25} label_type SYMBOL_LABEL - } - Fl_Button {} { - label {@<} - xywh {130 35 25 25} label_type SYMBOL_LABEL - } - Fl_Button {} { - label {@<} - xywh {105 35 25 25} label_type SYMBOL_LABEL - } - Fl_Button {} { - label {@>} - xywh {155 35 25 25} label_type SYMBOL_LABEL - } - } - Fl_Group {} { - label Resize open selected - xywh {10 190 280 75} align FL_ALIGN_TOP|FL_ALIGN_LEFT box ENGRAVED_BOX - } { - Fl_Button {} { - label {@<} - xywh {130 10 25 25} label_type SYMBOL_LABEL - } - Fl_Button {} { - label {@<} - xywh {130 35 25 25} label_type SYMBOL_LABEL - } - Fl_Button {} { - label {@<} - xywh {105 35 25 25} label_type SYMBOL_LABEL - } - Fl_Button {} { - label {@>} - xywh {155 35 25 25} label_type SYMBOL_LABEL - } - } - } -} diff --git a/edewm/tests/demo.ogg b/edewm/tests/demo.ogg deleted file mode 100644 index 4091a9f6078fedbff560ce1c0e9c8452d2b3885d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413925 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

(l?6OUi3p?s{Y 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

nUyjEm8y2_x{=L(s&xFDS$ctrZ= z6yopK8t*mcaG|CwA&(?<$y{cd48h|zE!D6!6ErFDLz;V%9jbK?`G&8@l8y0ZfVde5 zD1GV5JSB4M9n#%C;e^T*lZE<=wFK>r{VE7R#D3n$xquu~quU+C{j%Q}D&*XBTL=Z5 zcIkx=&sf=9Hn4jju{3j4buf-j)<-MHnU%-=%L0Vm>hI)5$Gbd?xt3(m4PH2cDJ>V4 z15S3=Qp99M*3zA=b&}hc3Z}l4ST+i>EgLr0t!t^2S4$O8zs?nbXby*q4;u$jm3c!) zAiDTM>#!u9D7Y{3>4}N?7ij1;6ZB-AERv$A_TQq;i#h7;7-%yI z*#I)7#*Jjypi8QosBtmP-gYKfOhtWg(rQ2<6wgKF7O|Se+hnC-hVN)q<+?m<#OL&P z?NbW43GMON<%;8NC>v%4z;nAwoXf*B;bT$JV>71)B;jeoPKmz3O{5O@?=G z5}O~G5`hp$eOJLlHA&-JYv4M{yYyn2|ZQc!-$?kXxc`vIW7!bR6 zISBb}`%f=5vps;ZEXM>OsB8}-C_7a0HD8QbY`iUUmka;mFV*5O*@n`Qc6D83Saeo; z_l|$&2iw}s4I_@?WMVY17o0p9FzeL=>n5@vS1NkP^I#ILdQw6{6Y}*O>L2r_yCWs7 z45CF<-l_PcjX~iXLHCd_+(Z=778jQ|g2e<3ZObbGn-XPsNKt~MC(*aaSB?kk$_}Xb zhEYShf1_fcPlhbuvR9&dl!a9H`}B93Op5=@Cjuw_$0shG)px zir%5gae6XRxD2uZe?ITW++XrSss&CePO+2v z6$+0t&!UgN91}(=&obTeD#}zhm8th^(pT_J+iMEm#DkFOu z_fe{-rzX<38=g%s`cB)zfYm=c`Beexcqun_atZeW6GA@~%OwRqD3oVxpgI!=2voZJ zcZR-!;In7fUP*0<|9~B!@+pGHJK&ZE977^Lt=4ijR0B0jtDsX~gsRMS3X1*0OhGM;+S zGhD?vD8I4`REZCG^qB(oo+=D-r<#E`l;WOu4;ng}HL1sVSDC{!m;TzoJQ`M4aR|XS z3(=fXV5KgTK-oIVRHEB#9B{gDht?ME_*;qTF+yJX(_SjZ^2OMdc2C&Wn!mm{CtI(d zxSL)8U#$+`9%gR9OwLF9)-eUtpNFocFxc1JF^N)4Jns?H>VW&|J8CbAK3r7OzfjEU z5ZTeOts1{Z;@+1*!aR!u9wys=Og4Frevy`-dRl$T7`%2HeVEjze0__hkm5P=vNfPWo>V9o7GcCaXG493h@{i1*vKL3z-TkYJ_Y37eu+?eaOwl6r*Oj0#CKXXNmSMka!iU<_2|xJF+F z_=)#yk=-;`$!#4P69ubenn9Jsh zOD*-UBH99IyT*$;_etzWI5Xl>M!zNbYiC^PZ#-Pm_b})L+t&N3azE42tW6?!T)eag z$keen`^3Au-_F%u=w!RE<5x4*%u-v`Zyn?0$(TOaZ)7{@byj`1s6nT-UN6a?CFMaU zdbCKxXA%&4Y*y_wLXv4=n@F%WlKT2SkyLBY!x2LkPZyg)ag@sD5P^|Ydya@DEJEx# zRinpyK~0tN7L(ouai9410A4ckQ}!HvNZH5%oM)$O|J1?f+HbyRdWo}(d%+tpAHEX& zJ#FT_w1?n4v?Fxt6655;M%Hqb7!2Lr{sJuSKp2E*`8~)obnKa*CTxt3AeP`@&_Zi3 zXb49}Miu*)*; zR=J9s0CJTWDwGl8DL7EJbxesek&A$Jht43bS;Bm=wDSY|6XGxo+>L*sT$qikd}sor2}(;W-z^sylVS`Sdqarl6vKh za}b(@^B2sj4_72^e;3XwhuVK*nr!I8hx@F(6q~N+xNx9d^(LQcm8n zYecU-b*5YXut=CW+rJA=x~RZFJZ#3267d!uvdoL(V}ceWMJ0H4d6R{58UUF*3MOXt z05*_9h_C+Z$JQc)8eQ&X$3=JmR}8NREHBJNJR;D%WdR>9&B5N;kBfprT9aO?4sf|(=&4yk+9yg zjD>|XG{_R)4gg9X@vftmcQyDDD6x=$T;M}3L#aIjkgG)T``a>+c3IFzGy}PCqM-Ka z_YZH+`Q4FEo^nJ{S6PeS?jVu^fJ88pCWAuY)`@du3d<~7^q2IAM0@0UV*z#Xb+pyU zyHvAgL}^xDynV!C z5HfJ*;oqhd^0* z+-k#zSKZZnz=n(S&=nGp zr5kp;X>UX!-TYvMxv&z>9>zR#jZnFgB6R%}mC=rHs4SllutpLG4^Ig-ge+wM*xE^w zJ%wI#7b^0Xi052X;sS)m=G$0HUj)TYR0iBB-}reQ6E@S&992n1PDiT^4G7j#JZ;fq zSow>VpC<&>mR(r#kz`!jJhykQp@*t1nU@r_ir)8kS z2}+NADVh|{7fGNA&x>Uf$uM%34I1rR@TdhH75<@RPtU9659EIQ;Hk^Klz(Acx+XY` zwr8hOW(|Vgw4QV#ZYDk{fT&U@WD?`ZEdasLQuWY$$4`(s&M%SXU0ZsPuzM+5j$bBm z7UrQAUUM3VQCL(74`X^mY=vCjuD8bmJlo&5tx;m3%V2%2$QC7S)}L*)HGZ6J?oHSX z-UQHpULYInM=iaGX6ugbIZu0;uxsAOs4=v}k>#>QdijCqOpCYJHeWq_30wxz>R9BQ zw}&()Q7W+4wnf@F)n%R~E;!twOsV>u9lKn#m1W@Eicfo=_1MRm55;wCCh5Ax45gYFGAC*$O3H^- z@Wlk-nv~%&oSA?dza&@t8eBEm4M`DT=kdU$X8NG1OPjT89@3S`x2!f-4URu>m2@;3Qr!Tpj0=b?bO<=R%$obe(hc^g~0W>Qyu*cVKdRH|i4oJ%oC}Wgn3(A(+BK)_OPrYs z%(AP#Zb}G1E?vrvemc>>F2Q29e2xJ2oOZt%#_*G)ntq-6ZQ^PoXkOI{+`jCq)Wu$(+*=hHKES8czckIZmN{2c@h z5al~1)*6g@aeohYxc6*HIueS1=fejZwM1x7*S&OyfXQJCR?5Ve{S!I);syY3HPd_& z8Tun$UCOY*;J3e{us_Nr+BQE7+9BJ3HhkOyXsz7a*70xxRjr6YQ1)2Fl*vPx#JN)+ ze4F1dm%q39;VUFA7iqQXfSYiyZ*x@2*gwE+hGl^lx%h=I*Qi}nbsFSwhD*~qF6){9s96++fF{h$D#BPnRN5J?vAK`Je31^iA+n)3YqZR| z^wK!t6zHnS{*h1%!ImrETWLK07;Fcn?yD4Wi#h3W&58(HXdC4Ox-$T4UEq z!bf0CZ=Hwz=jj%vD~oNH@0|0^BZ5d1e^Uz~mJibo{R?BL)3y6}ugUETI#h=j*_gTz zSNfG440yjF`o?jV{+l!^myRx32wagu%Nhf)NjN0rhsm>i|8oFADQt?ZMyI9aHEG@i zN`B{GT4hRYJidqryD4`591v8il!F1dw_#WkXGqo<;6O8r(RumO-@=O>M8(+X&NvLs%(8AAxHjV%|jzIVyKJcA{mKV6)VHe_N#FpQTm@P+6p zbN|#-i=<3-qyPxs__0QLV#l;Q5Pepe@zk9)v;p&0YUkQKws@fThOK@}!wwjo%O(|@ z+<|I*2iY`6nm%{pLq+wSe%etdCl*OiF|WMeTL0lWe6<~B&9j+l8P%VCnq7H~^O$Kr zx%^suv3Q@SJ2V-@;^@b?%MO?5tu*U-xNQmqurSejh@S~v&weFgHl|Vkv0Xx&pC?*d z&sH_X-=2H(Ll?gsvXk!o4s{W)iY@9S2eJEEXoP>S<=eD~UBlHtw>Vn&FpvouR>>`V z^mWiXlKPRG(@7IGh|*E1s!R>aL>=yk0L+yHB^#yCv-Q=P1ct#D$Kk}9v5#qx>M<8r z4sTmcrhNawhO`*L%BQaXt>&-brsH_7RrZR=4W!%xMR#fF=K0cE7CaU6At&CL*yi$; zA8iLBL)cY(D}S04x;#;_@Zwy!rtNOY{82$&+@H%k+55Gj7yPpUnT2HAK|5to%jHc7 z5#MK_vX!$IrJw0JsJva+4wIy20bl)RPhZ;yoBkAEBUgtL ztB|YLhD1eeNmc)WZcnSt5`o%ZdW0Yy<=TI+08_G|4#dS}X79*m903)O^I_RU@*OsbOP!A^1lek_}@A0L= zMCmaAmi=ZtL@$@AaClQ~W4{zN>rcbrAeBY=^kTQeOj%64=R<3{hJ6O#^rkg0z?H7Z zp)~xvd?lA0(T2td#BS(V_rTdvXTtBVY+3N>U27^vV9Tu&2eDlLOx;;&+CY8=A$RV3iB(Mq2a}N6A)^>pGc#7ATr}p z&^^oRKX2@@Pg1H_kq zv>&tANPUF-4fpKv@iLN^acs|_{~L`6Jo+C;_$vAWc;9d~;yK&dXj$7?eR(NnzCgk~ z7!0lFWMXV;VFH$=`dPI{DN4^u^dL|6bK`7%5O<=1*jl1WLCbgJ5fne5@708y7X3SM z<_7-nlnkQGL+RV-U!krEgfTDg*r&8~7Q>f%1yIHO$vjdNQux3{f6Bm4WWKfCq!r?# zwwl$w9r@mZKI{R^RtIrml7=Jb|?JrUDSR-jMM4uXZnk z9ii`gZ%)?E)#t}igYlV1bP4^K=Be?r^-w3Bt=V^t6o*4wP$V6+rd5@HAbt&b3%MxS zJBAZ2W3;-hS%H|y#tHZM-1wVLsY+P25KJh?YzQ|;9ohPdE9;ACWcqr(;?J(c`qqXWVm<7ZXVEAS`i2e% z&^_Ql`&wGg7&c*yb{-}EMr|MHhjL#gja9$Y-d4G|6}OCyWy?vQ(3BP&}PR*9eoUy zg=X8vAx7NH;nnLUsmI%LX>a2LUiCtyHd7k5QMTJ;{f~^m5v_81j&Rn~va=B`hF0LV z2`XDLvmr3QC?V^&HGXZ9Ax)@2np+oy8N>*TBcUiWZ?L81Tj@$;R;Ggi8^GH$lk_DUpd%msr>chju^XjtT< zKZ&`6V%CH5fO+jVYG`zt7y!LCV_!x`G&Zv1Y#tMx-%@)9fli{|-!Pr$ot|V{VOpyx zy0^KZqoe%|Gp{E`iSjn_TKr*j^mm%g<^dWC2M)M+1p_o+CLdT-A%3w_y^Hvk$>>5x zhlR%Mb@=t!Z^Z3CjbBz(vM2_M#yA3ckn@4RjyAhnb&#vELVEeKmK_4}F@8_MV0xyQXA9fUb244!s9+ zVCg6iAbJNodYfUbtaeXTLSCe5_OTBXkYer#iuA^o4qI1|s;q!}MorEG@L87YINkxv>a?sXZy!`b^(bbGShHI)N<^{*$p$?#|oW5YT z=mcek{F?E8YzMjvi}6~!FyT^|Y*JB8D(b9ot#4x*8YD$`|L#GRah#iBrIo?)%JTTT z-x73Tem24N_PzoDVjz>!wP#!{-h}`5rb;_iL|P0M0TRGn`vrU1zP7{}G=@|v znaO-Ln9_VUe$Yd`Axe_HwIzH1^29X#w($Cm zf4dIhyo$GAS=KA|>I$~%@iKqG7R*Glur*xKNmLo|Bfx?8-=HMe3`bEdjdy9cf2rHd z_d{*8?vVhZ)N8%x?og!T7bta+K5Xn%@rdLa%n}NSJkD7GI(xe zW?Q&yze!iI3XQFQAX_S1=Fhn+p~!kEhW8`dg|yZw!HedUVc(I}x3-jnM^Bh3XwPO1 z-lu;|<3tzX2Tj+Dza5wsIo2+WLCg1RYd)d8!>liJ<}E}x^>i?)t*e>Ortlv5X%QT|2c?`F{; zRP~o^Bj3Quapo_Bs&zx^u<_p%3#NWJeK!$K_{4_gI_Hx>`D{3KXi{dT2Gwy*EWx|Rxy}QEoFRz-; z*0mPs)6>d~ar1L-(eZD&knm965y|!#wiqW1j(%u}r~IJdjl`Ry*$R;hagzitg}GRs zUi&w~Sx?P9>;8$% z6tz>vjmMFFxGR$6AZlK(tsvH;r~uYw!oabE1;c4MPo4?Lp4Vw#?q2v~5FlJw&{L0! z(m~5q-|;@)ffL)}j68z^n@SuRlH(GFiR73qk@dXBnaqJLxW0Sdn;??F`uezlG^Yb2 z!{+N8FEeQfYj_d&<88}DS8o6%@HhF58QI5-X2wrE=ipdS(|V7qy6cdURap%vyDx?l zB6HDwRbss5=IomUt>JU(VXX!?#Hd)r3zrUY01Soty%|CtFXKbs!b?Y`{jJh;k}j!5 zHD)`-xIE(}_AeAI9~su!vft3J(+PE-NZ-=;3v1qJ$b|c;{soNaMQAU5lB$o`yzfh) zHM3AhNb^7?_>egSa z`h9VQp^r19^?uFN4&6n2!wCn$DDCK_Y+aU_|8j=62%%Hb&Gm9Ce60XhfeAb@L zvb$U+n;FI4w&whluOw}5)~ZyF)Ehj}Q64RQ+XMOL*FHSbqVYRLl}c>a5MbOK#qW>TuoCvQg8ae8S3+W8rQCS%*Qpqb*KdS@f&sUoiUgDYzP_C!Z%UR|xBVwn zfvJpq_iVB$+Zew+RdfD8LE2?88Sob=20lcG9Xj%>M41qL)?IQyQ{**hj7ZLPr5)bY z^mq91Qz~Y|89c8^F<4O0md$sMlal}4=)%gA3C1S;1X zWFbJX-sXS$zhD1>rz;kKzJHN6{AN8iYB=ofagoXm zo~%*eUjaow^&_1w7xA}aZ+V=zMZWgfOjommfP)Av-}YainkYDcIB0OnL9H-w z_8h0ba%$$ju-p;GckW0PfW;}hxh^4k4QmhnVTWq>;6Zpr|8&}%>LFAlqmbHPRD7vM z+-795uM8f*9tt!Glpz+aP*?c*BCJd!;z52CDz2hcT5pOV{DqxMQ&wKY&El^7Jp%$k zWr-#yvuIP;uPB$PxszZ9!1#vDjc?Iwu%{d;7_ViMEu%Dm)CXzfxCPEB%L$yOk2(v` z@u0bn*@H`Z7l*~~4 z6;6fat+6{#13~n+IWqf1U5ybt@JiP+r`()Nhex)HHp1ji4B|+M%o(K|MI>xdM43=o zC|F2PA&j^(z2sk;2KI z+axPW0zKJa?gf8D>_=X;71OS0odI0x2O zO$wQDx~q>-dqrET)1esDx7A3`?r%;_#|}@weI2)!?Voad+Dg5KIYbNB-YjLJus$mx}NOiN4Zt;rn`;9Xrk7bba=H zwtvMDo-|Y~ZLMuSuRc#dKP!Hk(T1xK4>72V*Pe#!I8@ z#eWv#%$`sf6#C3>3EB+!zz#TWLN*Hn^UH?rPym?7DUm{ZsfTL+*j>)P8kT9~Nds~! zFOF){-^{eIgT*DA*MxvESBLF`Z0JzY34)sQ(797MsW)#+%hJ&s#TIVg8qNwbT`J0CEY? z5&vkOKa`j>_79YKc0V$D%@!nm(v{}YJ-P~wW@GDk)cv@$@_5MX)~2~T&W5*Vu6lIv zCT^NS&uTT_?q`3Q-gB>lO`sw#m;n`B4|U~7A`_~ac9f4Md7f+KIN0EiWq@?Xh2c0F z?KtaoRTypJVdpN^G|3HU5&&4M(9jVwN}*673NVs+e4S)VZJ|%D#(*@YyTT2)1LzVR znvmavKS{O_i^1H23yT6Yke|0{#wrcy*Tjel2Py=C#G|3h^flwhPGozagP>?6FmR&# zBai906XDl@6=W6RSWIJN@J;z*_}shBZTd>h_*2z|EYSfV=|HG~N*=!p2@Oj4zZtuSwRnU&yh3 z9_rIl(r>lq1ltfJqSuTo{@`^?PK@pW?0|`320+dm$$Hy)*M+@BxdkCk%6RtKh7ED< zb3Bmg!*N5FLb!5<#vONwwPx}4*68sOS~$0V&26B|3E|JJo!dYyUdsT`-&euvM+fTr zAE-Zhs0)N-I~4-B`rjN951u53Q`@vS!Hg1Q-7@W6-;a z{NEmvxf1Ti>c{u(v^ZgzMoCi-m$TUq;S{G88lf#TCp0~uU8;tmrax^zd!P~TdQ(3Jzp*et0>>d^ ziGUu8yBbcQMg}lQQZ9`tz{Wud zlcz8Zji5n&7{0l|RrD(YJ(KtFEJIlh#05agFYbTNW5~3O$Lh9XEB#bEvV1y-FuMu8 zXKF$ut#mmsGFi?Sl-p6uJZ+pB0?%2(bkE&}BL<@O)=jY$Q2^)YsC5daTh( zcCI~@R<7BBoP?R5;(`Ia%KxOfetMY5h9>{!3{+g(V^k>06yxV=L#`&^!G}c>pQUfI zM7lv)6P^GkAX2*jgr74hrEAF7`O-=D$YT`{$^%QF{fRlrBZ~f(>1~0rZMT@L^B%0Et!M#vF)&NAczjs613#Cw5l8#Rc_7t&eK`#`q)3 zeb9iE)`3^9I-XaA9UTTF2Z)O7JQ3VfE)YzYE`eMBt1mLW>)`y`OY^P!-|rVSxumfA zOSOu%>7GaM917>@B2d=C%%QCMr#Ql3-7H3x0VJod{MEwa_RufqRG24H!7jz|`>4}v4FWo@^M>g(Oj)(B)7S)%N)se09n_eEpxqnx%Z*NU-H`^$Uxzn}UM zFYJgw*F2Xte%bqZ{gkG9)1@;B2lhKpi6%b@?u<(Eq)skH_#ktOABYkbA|AuV?Ondf z95C#!S*7vQgD4L+-!Dx1JmxvHWJzkbifevtzCALY{!;rJKCvdah<`ymlgxSe#8mir z$E$kCILKaMx!~Hyq&7a|5q6Ts;k+c?F?->@fMdFJuf~VK6v2fLA#oi#o`D`9RC~Zs zX-)d0q~q40!%reI(6ac2UxK?RNmWK$$TKe$W{;+3T8*Hcn-n!?PqfVho=`@LEf7%9 zRlr6yT$iVC0P@u9f^ZC{uCn{ab8|=bH&d1_@M&!AS%VwL5JZI2HWD*dW?QAQtwZPO z|K`NLT=w+ur_EgTbhKO*cyHP(rJmG8(!FoQbI1S0NP3nwu0&oak4^VH5fb?02}O9M z=-kkBPyAtA!qFwiTT@xP-;N!?ueiR8kA|67(ti}@=8b|v1aPKUT@*mt8p@|zQZT+Z zt&=Ux@0K-f-=@I6oPfQw7+LUeHtn{?1vR`xgJ!vs3x0eIZ72N7sMFT%70*NxBaswq z^mH)C^}0PPXLD_n&-P?+=;jUsM2lwI{iQiA>WPvuKPlw1Gs#%-__(|ZM~YyOVUs`n zag-_m3LjgxR?yYTm@7%`?ta4dEx_sm+eb>+=MnnH{_I_dhH$Z;DUgcu@aXbH*?y=} zSo0WMWqkKQU3zhs%%#aR8>S=P=BJDEiclI~yG$he?00n_y?E3+dU@|tDG$KCZvon5 zv$;#jjGmWNkoo^iN?vw5;m5&fc4)Cbuy2<){_itMuV|%Ax`|BpMJlDe(7122@Vk6O-hqRV2xnCf|Qfjwu*O- z;aL}156?)m39Yo07aPmZ`Wn~Wv(XP>&y`X4I|^F=T_|u7Epx z?W-E)m>cC(H9kE?VM5KGI@l8*$#dV=W2k+yOs>cmj=g$Qc(Zm(+2fh3BbHC@<#^_A zl8}n&ev2tLix6DC>kTOty`Bg})yUYRfC|8(9-}i(Oid7;F-GgOVN-C?3X>4GbP*q* z&)9R30^PD@OqN;h+&m~_0A5EIENY?Y5Y{5G*03FQXfHBO8y4*uUb--;53ps1AZF(5 zNQSGPc5#oP+pgQqT2PovCPrGLL}Xn&yfCO_R)Bu7t{!M$^?IwZvjt}XQz8ZcP+*_z z_OaQa=f<|WV_BiO(Wr7vsTeD}an?BP_tQ1;?vB*9+eP(WDA7Nvu!KgDtCUjNdYMa5 z&nXnjK?L(C(oeCk&9gjY#q%TOy?a?bVnZ}xS`DU8%QTgE+0Lx=(P+$=YU)_QCtUaA zeVNk^^|4(EHa*gDZnN*No^u%<=7)Rakk?h&6<bvW zvxEL5=89YB&=QbiV0_+eDj5Al8oUOwqr81D5_3NTfkjMoQOkuC0Uufy@09A9kAtw4 zi`cmmLK%-HO8%8ud%9MOw8-Zom>K2GUx5{z_Z2@CC_2>vZ89EP;qLt)LO{#;ESLV< z)3KGXi+3(RfVc~ADjX!i-8kmLE1g~|{k8f1$T+-z75p|DJcMfpip$g;p5DBsc9TWk zybGMB%pssoS~W&FZO45_1OECQ^x`z#;RdE<79M#J^sVUl`^j=ffquNhD9)VGeK4H6 zhI8QN->UhjM8O5bvSaMu_S^7Ae-&6X=rdi{DKHst=AN zsboqqnOx}yD0xQ3Lu8mP=!^0k942Vut7Fg6ib`qW)?F?HokCAu=d$^4wH#cZ8%jcr zl9?V2=2@q5QSae(Z>bZa1+%$chl+yh-#%;8E+LGzOdzh9+#{F%HLkO@bpV%Iy0M2M z)Q+W(pQJCv&)qg~$)jI{;I2glpf3LdBvrnbWOr`eecnVz2O5| z0LAaiFcR&3ApVAAfc(xJzyHULMsqMMa^&F|oDJWrw)G+V3Ev<~In`IpOFuGeb+_EN z8cPhf0W8}R;C?C9PEjRfg7mU}1JUS{3$@byZK`Ockpn;W(&5v(-P-n;3bnQ3xSS;W7cB*4Z7=@_>R`OIJI}!B9gu0bz(Mqn5y5j_?!~Lufc;v+ zw*n#5vz};1^2W$h(^87P3BL2U7a7>i(UT=b=VXX0!rB4i6gSg|A#L zKSp$-W}nYEDj2>M=K_k%6HVl4DBn8Tx>8j|k7XZd#~dq>@BDtY6Ou!QfY_Tm&9QZ3 z6zI4%dC0j~roYj36E|#$2eaz^`+!tA}lxzBA$=ujs*hnUx_&zCYWJnU}THc(S`hJ%h{CNKt z^X%oTqrIRZ*{~nxE;DeGZn-+2ch~><2zdv$PHb;^-~V3LGFmz!F46Gp8ZI@0=h^x{ zk%8|2MF!B9$S}S5zC!TTgo*n3iKFvV=a;>at;JXM#Pa9D=l16v48o&#U@Z>97ePE{ zP3{njK*2rjcZmbd1{-1WA^+-+ITJK>6tqh%)=L&zlj@`;qh=*Wr`zs2z432XM>J5O za*n>CIRfZuduQ;kE>-ZFY0KBnJ`MNJkaYm682}CyKxZ!xNrqP)RHJ5Lk^D-42K`DU zU0w)3!MDU0-?q!?YCIzOgR0j2&!hc@0E1Yc_4l$x&!OFo(o%`incZJ4Vo>!XcM6y}8pT$~^GKB0&0o*D9zD{3kR7DA6Z}W!N&}u#quzAm%nL^o;hZ3K7fb( zOgaNP|BB`ATV0tPj(@~ein4H4>uf(vs}%p^w7lQ)-2xKSPv7u9bg(sN0FC0Aw}lru zp&t(qC60q78_myOBB(zX_q{Qn6HCp>b-P~ObKp2hRtx?U@fLh27qfk|ib5Q--Q;^? z_R5WUu($p*6Y#RS_iIc%8!KS0RhT8Cmi!S_!SHo^wI9&>aIV2{_w#X%2-U7^PWb2r zmHKCVQ{JbX#;{p)9=Vz~ajrnmTL>=0yHJG24!6a!l5c6A>^Cr!$5!hDe=A-UDuvmw z-TSPgx`o4ryGSR^YM|<=w5>O%;^#6!crH8aKj#!IKQedp#l*P~UY2>rq<~mZV14%g*<>(yAtq&}TfBDH9bcr}}KIffMJn^F3ao2(<`Y!ql;}G_o=L3jqd|jjdfiOuRfoMo}i)J@MAk^nu($2&}>g-^D0|oD{gL^8SypA>bNh^1;#X`~VWj^jz&oUENZy`h;+#i`n$Dc0b2W4u;ZgR~Z88 zW}mc#VV>of@Tb|Q_7MXT;9MW`z^Hs4s&1ox-=-5XD~3Fu<9REV`MweHYYU?)MlNVq zaD1>drCs@ZdDLEeAONiOW~D4J|GxBSOVO)8_YVmCP{>;LTSAe0ppVBc!;*9QM3px> zI``ar*wm7nUGF+IdUEZ)^%Jlvh_hm7)AFKPrp?4{oB0(x_HOxf-aSlp6;tBs$1v%I z@&_sl^uk)gf5%H7HBa-JzuaeTUoksoDeJN7G0x}@2`PZ(p6h0w56mI`{73(}pWdcq zwDetX@r3yrb@O)ic}`*vLHD5k^Xd7JzU_wTO{7HqXkO#c^|1^(+IH~2iN{QXx6xIS z!AQUGEX4!b-@C&97@-6VL@POZD^7|Mt#QN-d0Wy~LQ{Tc32yNkx(i%w9Js8{Dj7fi zqCi=)u-g7_sacZi1F!Ps#Am7tawnzun;)`_lB94z^@T;Y*j{#M^?luGbZlSl3=mLCULVMZz+~&PTTH z;4H=mNAGbWQs1Pbki&+w^7;titw7}HlWsGH?aG*wq+zi-9zdP zf6tg);Y%3rZ)zd&Zo8x4J|ErBOI-}2Hd_9MJj4HdWrJf<8{2OX3_f$dm@Aew3rUL) zrlPX({|X6L0+@69Lm0!tw9FcK-s_Ove8a zl5@02VWT{BP9yinf5w32TFEn$4Oa+Ywc3{}fWx2*$dZHfOLN%v zo%1APpe?fy4gD43>+&98&)WJGC;>^Nz$CQZNI5rh`@~#nD&5kdF*$6gsYQn;tj6;8 z?JCS-xkhUB8UE8hwirbr2WQ`9y+YXx5oy|1(n>V>z`VU45oGpc@zGhT`U&Bh z00$+i1jZm%C@oVF?>+9%iy*}7x+zXVhlkFGTGNV|G-g?CqBEghXx4ft9^d%0C*7J@ zjQEk8$N{FqMTwj>J}h{6SGjo@w%E_ubKt|$mO+|OP<{LhPh2g zv>J{%P6Z9v@hJGdu{8=2jRVbp?mP|Ze5|(9Z(c6H$GEyWLL6D>`?8%_@jN1C<)qLG z_v`)sdxG%ak;cy1^rdzTF4*#ppC z-&r?H&?aWN$aab;3M&p*%L@ds6GBhM9~ZdnTlSlab45$$1If`s?co9bf?5zOeeAi= zdcc&GNK_CQ=nO0*GvBO+51&N_eCcxIBvwwx9IiY`u51XuZRBkQ;o|B&QKfkhqkzlK zOZwep6}BQPldraX*B{5?TU62mqgS*LbAu8X&KydUkjdPgO9?E_RlICf4={pkf%T{5 zuO!{qoma!oV1TN+jdAqQQ>&KMj|9Y)T@?Y_A6Fw8P!tWfC)|=iF5wWR`8)4vtOw*J z6Vu+ER?B8!TmYMl4ipILZ-SZhdr5dRwAY=i_LvA%9)e<>xYrT7@B#4Km* zXs|z*!NT+9^_30yzc<2;jKIQje0fH7_J|#4Ug*X-RN995U||kh-e6f`DIZ-$gFpS> z=p`je4Q8hHdO5{nDsnWskbZvHbwPh6z)04LfB2f?ZT`laIzYWhluPx9cu(yG{yM;} zVAcSZH`6IA*n4BqK0A1KYA~>6%4z8k8r)&-C!~K$h^{9Z1#J&OQ2d}WrbhXFRi#-E3QWoY8M~` zc~@#NM-%rw&8_`<@oK-)xz{h~-RBIMx;qJ$sMW&0bLlC`{5EF6uQwtRXF1%!9?Xd~ z_XoCN`{&CE1dlwtM{MVWt!>J8QPVEUOE=@gRzkdjsf-S43(;Py|C^hY@@usyqqrra zo=!>gLjilXooHH=Cd-1Hc?F80)Bv~i;3SN1t+F@gHzS17YYfT268RLopjIK30+CDr zYZ^30I1mt}&;El|*@IzM9IWKf0Gr#qC{~9<&ff?r+>vkVF@|IEE?~sK%&LM9JpGs0 zGHS3KruJ#5K{MRJ7nh>LSe1&8wM*pigc-^9kPsRzKrE{ z?b~@Ay=Y4empXH=E;26NhzUE#`to|Nb|XH<%C$nb1Fd4*N+deByS>Wqb~Gf@_iZWi z6U>%nLBOT*#lqu{6}QG+s>y7Zo4W$T8gbktWv(uayZfBZdXDanJ8frl0mRYbj!ob@ zs#TbT9@yQDdvnKSN}Woi9(u&8w^V(%3C5~o@>wRoiGf9L1bC6LcO5o^=PI1uBf& zh0Zm9;T$)WE>gm$GnK4f@2YoVR27@`tncH-67=!LTW_sRA{elgX<<9SDH+2&34yRlTgLN zPbpUIO^)?#YJFw(UpQ>qoc&YnR(o90Cv6ReqU!Ht5TrgOJuDOzNvj<_v&{k%$SN0qUbmy`m}P9|8CplI{`-#kIFMcNW2$Y; zcz)Rr2_nh@EL=QTC@X7TmPOq>>5X*74s7V68WCr%5Oy@56yIP8o9+eDJ*mNy~Q+R z-b((+%jCcRveL!@HOa`nELn@#gp94n=rX!n+Wh*#E$cbppPIhi+?D*-yhLHRcx> zp=EjLkv%ucfRt*5>w%V<&{c$vx$9v0QX!|GC7wdQu_yQ){FS$NcGI83C=Zs*B+`B| zGD|)Skm@}moXmyek0;zEZS9s`PJlP)q1zLa5ZUb2+0u{0DF{C6HFK=v)ev$$vn z#XrpS5C8Sg14q{`S~n5O2Nv(d7`u5UJIWOQ?9WzrFZ$hCEp=xUXA0r*w^W_^jk_1O zPTU!1Pu~{$xmKjZ{@%54;B)-AbEl5hT3k$sj4USJE=wkr`~6lb(YNbYOzlPy;V{xx z|6Og)A#mv-OMMW1?diVjyN!Yy^*%oLA6?gOJKetiKYk}6jLm!35Za|+6>6xaIbF3Vs9g&Xj9D&Y7&SS!O0HfGmYwwdwrUy$;#@SG80z?6%4_ zv%=(&28=Rj=WnzIzHa>;%>82Gf#WYOFIJT_mebV?whF+WUNl!Ft)tpN^8+YWsVh+wKf%S2huuDltp~@dx z;Ep)IvJ%ktqcYLdD^>$Dw_V;;5a16>GJk}oAe z*6Ks`t)j(!qj0I#z55+c789aPELtQmtnk!=Zk<*d@w9(7Z3;ZI`$B)5)|&)hGP$FM zY1qp|!6t%rFynr34G0&Y6IVr^HiR#te#68wINRI}j4V{3H&k1*JQ=~F10)%G#M4sV z$cDq*MFIn|Vg^`wK8XrKPv%I_M1-<~d>Q|HHto)qbrLvOd;n|;{Gc)b$O_^y40*Eb zaAZJ-8`AHghjGI-M#`o}%ED-F7lRs5t7no<%xjhRu`yCn*$s=Sc>r1<35Su5OeK-| zTE#D6nD0h}*3iLsOfr2UnwV2Z`aJZ}CimmzT&1P(=z|=eoZWG%8}sneRd=&m&Xndb z?aTZy{yp><6xY!Yx$Nf5aG@PLTXN8|nRoPU9e=r;E%U4f?VYv5vHwE2Cd@hMT!LW@ zv(`fOem&5G_V=xG(7t5TSbNW`BGib)oYldCeQc5AzOFlp_;m8)J1xtXEWVdf!^Rm7 zm%u*rH`H}78J{Z_V=HUHXtqfZ-ErPw!oXQR4ROKZ4x=~-nfo)tCMnz>5iT*PUu+s( zU@1(3KS-EmxL`0?0i_le2_4DJ8$%aqX%p6LX}8x$)VNe3B1~c!ZK%X6j2PV zHka6gb5;zcjAZEP{AcoAC>Ov^EOeJ_kz)U8!DQnBy$B>Bet#RfR;IX`U0n7#`!#nu zsN)Doyqo%CB*{@ef?>|vaAI1avxAHd5xEiJ>1t{1!q{y7U0huw6u=Zqx|!e;7It;5 z9S(5uz(yd#&j5T0aa!f7!v=aH>A7X*BTA-x+5$v-d2auuzAN%dPHU9m5xyFGW z!CiR&r#Y91mX{4>CFsQhP#2EbRO0u{?YFTv zYd15M3ii~%Kx{5?#^`u5_w6dEnw|pe!@8yw8Cg;vCn|Naw#a36UVTL##ek(5ojg^c zK(8=J5njMTk}))j9|bCsfhh(I8IsUJQRiDSMkIxjq1f^dX%zd=4B?=O_*PycmQJE| z=I!nO+^!hJp5X$E&fIgMvkL%#_;A)(ffeBuk@Mf7S?qa>F{@zERh5GBB6+cKq72~s zHXade2>0Bj@CQeJi2T4$VRwx_Wg`_pk%eq3I+GJmxfri6^^sbNUBre~5s+9Ih$6z= zSdnxZhH-*5I)xgjLV5`x0V4M7w(GUhnk#CN1-1{y4 zqz7{-aL3g!_>ww)#+FjsMBpJhR`sJR=^D+=n_Zc6DVaAt{&(6raES8*yC|uO_}Nel zBngL+8tYqBchOuzOn}lTA|=Kah;H^{R>`Q}f(sfQh&s(wR>*>>j3^muPlFwYs70|C zRelET&^u88z}*Axu>cG3X(b0`Gz%jGgI8JF*m#+pug!s2O0v{T1`^`IZHRs6EE8g& z;Q3`fe$lfb6@!JcAlw<`Hj*GGajCXVgASKQOzrO!O<>-|LEA(41h28HCLZDgg{5yr zxoh7+z(99mK?J(#y~zGRWwlD27^`kCDl4t{GrNRVf#Zqwk%zh`G_3w=t9D9%DrYLY z8Hs_n@`wA3Q?#{>i_QT-y**ds-oX@ruZ)W=>)dmL13@BG<(%o#ihEKRIsQK0OQgQ! zqrZ`>+!v~PzBu=!(eDJXC~*OrVff~c26$gP0W85EthNtk_S9TnqDMsZO%P*!@gumr zbxyGC=80|j3E-i|Jw6v52V5MY8z?4KY#j3xEyO%o%bRi8UnUybzJ>itNbd1R@);T| zQT$1_Jmm0;Hp+AW5u+zdSdwFg-qHh>%vW-4vvqsk>vHVh_&))ad)NT6^Ty;^A*;*L z97$+wi|+XqzO3S{xz496zZYFy*K3>Qb;KAM68=n>XK?}#dE}fF!NFNfrM*QnyLv%5 z%(gQBG7z=~Fhek$6-9x%med`tS+@6yUIN~~fIIrRpn&1j%HpdznJ^Wa5LnBH3qn(6CRuK)tIiw;M#7G^l#2M%T@x48m_^dKvG@R4K|i#b~ zIrc7AHr=`Tw4GE0N1PTV^&34Y(SrAs1rsKZ8jS=61~M{t5xE*Z;Pv7s{hEZ&t!|Zv zo(O$6-sMX7Hja;iys>3|wOjE!w%js?0dQrK50g5+k(v@^>_#gT3(@|PLR6gO8Or?$ zy4=S(-%L0{A zqd7g9)qfl6{>JiBM?8d5`3%TSD{(fYE~XrB~rBPATtL2l+~NANxemg zH5^59q1}c9WT{V9=D_FM5r5}m_;wieXRr5`2$vL(qUOnDjK{Wh+8|CLFaYevR(fYz z>9tPn>>{8o7&au3Oib$=ZewX5cJ5~%PhQRcFymP_AgTg zXRa|lvMEulxXKv!wKf*HW~X6^Cmfqt6~Kq0j}AnN?0S>0m1zp!wnnd!a|O2$8sD ztR;*zA!{->0Y(uW1{@uB&j1tSAMqqKf>Z0ka)yFER})5=#@K zue<6meeXDM@qp=o!OrtKWk{77bm>#3`r5(bb=dtYOo?tK|&$|3AGf+16mQoH@`)vrwarDU>+{U|vDN7kVeK41frSA*|%^ zMhI|is98Lrli*!P!bLDdKpV~ra&TS$17m2+{Dk^YsZ2B^}B zW*yUrkfx%#zKYeqgVK#(zwO>k2|m$k*U#?Wvd%c4RHymtZk(SA2-+@>bAQ2jb$wOu z69F=)%p+!JFR>OdL>DiGuSt{LFhYAn11K7W_kL@2brT(y-DkDb6m|63;i-g~KO%lm z45csZye-wjR4-k-zUi&VR;D-^Q(bZpew+y6{}6SK&6Rf1*4}ZllZtKIwr$&1M;)ib zj@hwo+jhsclaBSo-uum|^H!Zdu)fT?>t1V&F|SeO;v^R;aisIQl* zPKy0aB>a0x@hcJdi^C8)=*a-u-a*G?{XBE{_!Ns=)c=L)uS)HcYdAHRNdRFK25fXvD17*QT=9(_=f5hM zX2hkF-?XvPYRy0ANq`pcT`)nJM4lc0jeYYmf!C&RI$UJPgJlTXk2$~3Z69UHb#US^ z)ksAPAdRzYPv9-^sx@#KRI_J5n5&E096=^2X(fO^B)4(rwl4BhD!ayz185hO>+?wj z>({q1pAa^Hl1;7`WLAu7Lz?gDuz$bF0q>H^b4U2(+^BorQSQhJb-Rh*Wo&Pq8SUuz zh+UpuZjVkwTB=#>L>JPa3pr5yr~2s7-~J|m;$nZu@zT;9&bJGNc}C%HU&aE2)p=)L z8o-DiEnLm@BIS_O5{b6WK2vSI2h=Kg_#)u0w0d#Eq*M#IrE$OaKeuIz(l}tS!v2HAmNA7#|5pO_*&_j$yTl z;0U1hypS`{82mT*&mC?jz6bZ8X(Y!OJ~LaP3$Of8T{!m7mdGfNgv6VR<>?|l1Sg^v zgBtdg#`vzUa($Tyjqr(w?dFpco7rIq%$7K*BH{znbHex1cYTBEvZCVLCWQ@`uZ8Jl z&Ry4ls<_mrjCW*xX1DCb5BOZST)x(s0BkvB?rHs%OeM1s5*s2Q44i*jbcBmdU)@M> z-xFa_(KH})cQ~ulyHg-WN2oA0khgEATKJWP5&i4^;(3$|@=^a%kPyBcL-J)qOd$4S zw|Vc^vi2Q=nbQqTYlC2EQu#!hsfE8uX5drGHq0bIF@+FkF=qR`O(}&v82mT=0kqk_ z!*(DenaMBdWRQKoB@!6>X4%u_eGYMVWpVu4F$(K{^O6Sde_%IIlneYx|5GSfe0v^Y=kjJti)!loK$>aoC#NzctGgLT<+!k$ zwZm$nB1kOgS_R=>2GYaC7$i#_iBGCyy&^reZZXoXllFeUvT!pzO4fwLQ$Pqpb36-t z!;1bU*8Oq7ZMO$RfjAG3vEbO{i+bY|-~7c%nz;rQ;Gfd{BO3?GE#jd33{&KHZghL^uarME?SA)8BFzk?G?5}g7HU!YB!5+rIxwVvT=EraW# zFx?^OBTGbb(Mh!()NuYStm=&>rRpTO&MAEFZVnSPb4x_YT(5 zE75;ud+dp{if2(NM{Z1CaFrG;uRKT8SR*MIAX4PRb}S`+jyB3?-q24Zhj%_4GQX{` zE&uHR!gieZ?&iHOJNFn&6<7*!G^NJ6kaUg*%F_$R$1U; zK}_3U2hSifiqH0`*VNZV{0@G25I)q?U04#KS#4%^D1yfM>_$4T*CTf66cc#9ov_~Z zaaAzToBduLiqv9D4Hl(`=7XO=U(IaFO*NZTgemI(*tH{m4OAC4>GSi_3kZ4nsRQ z7vr52x`xC!VoTTKU}zGOzu-=>NOTk(CVJ59=%(-USxEVazTg|!E3ZDCqB*@%R;{1% z822`0*z`k6-WUx)kSmARdC2sj(_ z)Ylhg65=%}^b|ExBlLDLsn(HEvO}bLO)>5$sHNDZNUX~U57JTk3|XwglmuOy(woq& zyp}wSEIXLjEITA(ee+mFhN8894)7?Wko9t!GqD*()|=x1z}nfzQa2%mMR*^6hdvUt zr)*7-IUvJuoC@DaefodcMu4o>MH^cZ`G*b`mDjmPrbXMmn`dm%p-DED-g=LH(DB0D zdb~1sL$5}6LcuQSs> z@TkXetTD%9hik8ux`l{lUE2;PgvtxGA!U zLagQ)eD{*8SC#S}Up3+fwTaBmR(As_dYMwb7q-6y^8 zCO6LCe`no}Gt^v%3yKuIS&=lV4tRb8w3(k=zkUm#qgypZBu$$q1|;?N4*!@ukIHOh z!kghz@W0|enav=qgqkZU}%-nM%YBOpCn}m~bm;>t8(UY}?6V{%QMP+dD67&UlSi6rJg7}SZKmgKR z9DoDhlp0`bJTGKpx@vUpB7Q~7mi)bmyjL{hdlB!Qen9`uV%l$yB*9j6;&%(bRVN1K zRa(qfXgh92kk#A0IqbjF1AX;UaJcU(P@+}?KXht|yvFo~6xx4!*T5SFiKacPRScW_ z-P!4PfKksR_(KYiKeW*QdEt@$kjN&_r_%+EbyvLeknPOEdMGD=de8H7)}SG5fcK;- zQx(Mn5g^H6V*Chnwi7RVy(GC2puHg?tV&jPI9q1FWW!iTTa_i#>mA+8`)9SjBP z3j5;p=gSV-HhA89M}9pwTPdCn6^Zdi1b=%Dj0+ZJQW)4&$0)plmZGw{!Y*a|u}y?T z^?7#l4<|`}eUog@pxv|%&Rv_k9p_;l5N$3fi~fAS_WFI2J|NR1Vpjh_((*!FxMY3$ zK*XpvB!?P(40JHt3SkZC=mw|ZbcZusKN+c7gCTzbjP1W?DEHfwF8FSORy$^IqGde> zJwLon2Wbi#qUy%W^LL%huu32(T?>L8%9Rh=p*cKEhxt3iU%_8+fWT`A0Ad4hlns+8 z9nG-;fP$O^H8{M;4a2toUYKAfZ`@EQW(R&Gw~6?N_b-cftT8j1%F8@bsVxk6&JeIw zZd66KzwR;XbdkGp!io~JOk`bkFrU$+xP9ZG$N<TyB0fT1TKf>`+#b_d5GPxW0MHqI|a%yN2 zW-wwVXqoT0d-b+fF%n^AGRBLu-<+8vOqhrH#~Zcurk*Lt&>hc0=$179p=(*kG`VUW zH8mj&lqUUKMBW zL}(_c*Ba+78<0&FZtkh+GYHX5!>X8m01yG%dQ`6_7W}v+gS?q~q9CPc%Q|Zc_r7N= z9~VQ?OD&c0@&1R6>$X)#kDBew5un!lHyvwet`LPG8nZHQ}*hd&B!PU@#_c~n-1!x1BL-y%L(UX-?Jea#(& z@YmY$=dh-jYxXW)+mur^+^C-F*Ypf%ugcFK15mCJpNpYP-{s^!6#(T}7u@`EDfPF& z+ga6Wm>1Y(@f#wuN#GJ7hdh~3u-Q#IqbXNnzlquVp$E>`s^U!0|A*N>SL1f4)Bd^l z-AoCNX8n(P>!WOwGfiLPDEDNE7|#}0zKi>p-f6p6O*d^8d}y<_Q-$n5byM22i7IyI zMaS0ctFj-){pa1>zdw5Ve>R_1KNNA+yS93Mj&iU{SoW+!U0E8d1ia1AfKe8PpGit$ z`g?Sz!Wdt5aOywfh8ax8pq&0BDrTR${CSv;HM;cR{8%Ia_n<=udzQhK(HmfVm^}rN zm*)1hlj40+KMPwaog)4QeCm0w^82#vDy6mQ{?}%pJazsZABj{-QNmZajTp|Z#yzdd z?d0|U`K#>aUe;SdvZuV8jJ(SxL3xE-X_f9vib9D4_~*sZXRGZ7Sube>?PIP+;KbJ#2uF$I`(XWJ z6H6UO#a3;QjI4kxAMIB9B{LyduN}Kh6${$395knR!_S?Y`Bt-TqaD!sl|Y)xkNPp(xy z4fer-Kf4q)F%IbgusAp5tHV_)h@b*jMK=l~+49xvaX-Hgd!-tr&i&_A>O7Okq<{zV zHx-{b=!IJ39wm%B_8-Ju!ubPwr#zx+gV z^plJ_@jYz5yi4RWf7|pcEU?O{t*^|t>-R&Tw9IxpZs1j(Kz@#o6fsW03QHKUMSE04 zOczP~WQE~_g3+GM#Ry!4gUI*CwGg1hQ}0uc)w-p%yIXCwLl*OA;+-!lhh)*KkmVWe zN~qoQ&F&?amW{@#PQdr>l>hBLkIKE|=!+JE z$zJ8bXWY?S)H$I!pvC-vBrQoD7VSUPM%`x`m){tt0Y`z+ZK0JIl~vFouK$JSW6%}! z@?1OiOCQ^&W!&6z(Vu8r?pdH$?Bg5yEO~E!52Hz*$JP2;&7 z3YH~|tCdGXQn^J1tDEzFY=!9PO8PdnwR+XSNZg2FGw4GrpGmm7;3c9^e0y}92CMDyJCpx*dBH+`5qT(}8T@707zVk<*^*=zQpj%3FwZ2J`5^N)(XLjKR&H#OVstjf3j5c61$7Py6LWKpi z27EKed0)|=V{CI`_1a6_{*UExKd$d@@MQ`pN_eU}gpB8|Lr2&Nf@y-_^S*5>sulKm(|m0z z4mnT;4zNr|GV_lZY}MR_!axX$5O@I~>3`X6QcjZXVcQ&ohkQF40<3T`y6z%>2sLV? z{GXf5b633VngEv8%Iuo{SG#S2i3-KQAHod`5MSp>Bv5F$`FVx)9sijTSKpjQKYW%L z1PZw)nTzxNpvHPXyTznIBV}Hut%pM)ChYFYt(S8_MH=g~!TN2xEFSV4T0Ok$xd=;K zw&P2#IYy4o?8^Jg6%t56cQfRz9oC?0p{}(Ic_@)Ur-JA{oz zL=*Qal$ zl@K%#xVv})r4zJCU?=fJVd!{k8pr6&VcH7-@bqW4ytzNsQY`1Qc93ms0AjQwP9-$R z?i*qbHN`RrUk9Yw_j3_!LO!Ii#>8Jit;!sXLOV``L$<%50e$*hePfSYM-h4%wypSk z<{u~@cHG+DR7ISUZiY|I_&|m4G85JkS%gd^?`h?z*wMK~spbD$H7L+hEmwVc?(R3#Y|+?dZmv zdc66^P@l&^umf8p5$m_6-WT+H9TX`9KS3)laB-Fp?5^>RjHWsMJicnch z+05#yi@!T`Q*zdvk=0Eb%a-UM-mM7<+#CyBbx~C|Wwg;aTrG>0$RcSp zDmBcJRWt>0T);Olg@1pb08(0t$R1`e#|~Pp%Vm)NOmVq9$6l>?Gy|Si91v+VQ(zZP zojZHeh$1$Bjp<dqdnB-_` zOx4!Bl8$BKWjw%ESDZhBTv>4n>G6`#Y(F*2(&)Fy=v5Bj-dM|@M`1UFXMib~#T06h zHOMnJzEO(JB1#Gp5Cn3bEqAl+@>Qs77?-XFv&0GciVH0Hf)@!lPTRYxquC-_scaS) zy)*+eUqW__<5`eTPpeUxD6D?$)qZRpS}#tJ)eCN`B_b%5RU)X{GmF^`y)>lHbvg+D z%SBR!O=%5qXA+&Z{3Ap^aa-K~al4t=YTs&n9^u?G8H+zkkU+EN%%MWt+QH2@zF7niN=YGl?91iduGb4s{dnQVKiE-gG!%EYBXL=HKNEAMsk36 z)Gk}>G}0Pf+@`;XXv{)@FxaSFcF27+pwNNya}_uPY%5HLo+Zr@LhTkBSyzt0=0-S> zTkeA-G~JTCd^cFDQH$}zyeILXu2ap?sbj`c`W&e%Es@lOmi(3%q-K(1YUt*RYuD6H zk<7h0Ux)bC3WxYwJhPDE^r)qeoI3*^{5Li&hV0VYqqBd-i1xaU4UbIwE!=537i~X~ zLwM?qnktl$9Iz7%S6XIkUOZd6CNr0_rd>Rz{%z#ImQ>VGRQYVskt^$g7Xexb0I0KW zMF#O4yio%z2nx(ge$o#zMOGK%1V&UI{-6F2_r{3lJdHU7m^lGcZIk z$Q1akc@d29C3f2qYy>F}9nA7$k|Zv5o0|FX)?Am>=Jj>~F-adVXjp=g&UUKv8Gren zgA0EDuSQ$N8&T$MtMwv{nojW?Z#V3`!Hxj^jIS)<9j~?WJr(VVam=e+x~z2iL@zI) ztj>2ry;S$D0$&cuMn0BNj|C*dtcNeP9*b1FF5ZM6waG1sZWDt(D#gaIfP}Qe81g97 zYP+UzG9aSb^0lO@5ioSgCbBEc_(#BsMs1P1=}hX10a6`5BcpYI`{9n3g;vepR_^P5 z{~<%slW!I?T6sRxtVa`DG1l*A}u<}dik78 zwkb>Xg~g`=!(t5Xh8$niEZ#>)VB}c*bmuulQ zlWyPB;IHy2SRJWU(mroSME1ai+a5bH$mPJp=CA%yZ7lEjRYfS^a`;)*4;&QT3Jc`% zxiF4}>I*Vf4?|Wlh#L93u*Rx$663C7HFq+U!aIcusJk&^{~K6ZN_D*bJcMV{bts!V z%FU)?zK77`x%sjB%H>g9EVe?Y;=I*8KX^>MmNDjLT82y1shq7&$nQ%bVs=QINfhFI zns%6u8-8_oRW9G2?XFI7KP{$~80!U@d8!b~$*R{{Qa7X1u!$$sKLP z-m{M}Ktst;8J*X&J^aSifavFOl8e`}evtnJ#H#0-BpIy+Bp)h1y)p{+mPz02nM{L) zIX^whWeQ5WA+Ms~ma-Z+K3O7}j>Y|=dS}iHduEdwPJ6GXLLyN))Dh1!_Z!c89B%%6 zs*pOWJztF4KZxl;{r}KI`Tyw-!r!{Xm~(>>v7METqP?x9#kb;6@*Q;8*4EY3*4EW= zvbJ#qZ-GnnzvQ|ctwmfC?ouvj(mxkAU7P)`bl%^-UrkOdM?G#md0j*dH%SGcrND>v z3&G0m?F4QH_gp{Un6k!NOZ4_igy+Sfuu*kPv@&2+;CcA(L-f^)L%Z&`2I@l_-F&O zon3j`boz$>7bo8_Smwx{CG%iOxfXp`a-u2_)v`J-Y}CnknU<<+4_TCViws=)!y@Q> z8VXxUS)%?{o!2g$wSN@Lf3BAgr}}GCN4>+@|9tdBQ^*nrU7=xf7|~_->2NJs(kDgV z>$xsa8-<>0jRjt6&8ZrGQW`QeWXVHd3Y$uHUvygR$0cqrtFhZ|l%*9SH@j3*qB}By zTG=0n>2Fq&8S%v+yr)9>Vc0bkd`_;P<*Q-hVkr=F;BWQH-Ua(la&Sfy#Io0~zyKjw zj_zFO6*d5jOw^gh3u-7LNyyN-hWS+~FdY*ZZ?4- zf_TMivnP?7+BL)^H{RXW>)>44Y2ecP?Pc_^jB}3OFWd2Po$9D5tom|}!J#&>@-wSq z%Z}+nF$Q$tY{fQ)4@TrcDWQ7Sgm%0j2Fu-@bCTsNb+AS9~&N?h_&cJ>?w*7 zQ-*dR3Qt59ERvoSz&L4B?*CQ^-oih(42^O z8NnW=#)AyM1_u&(G+Mn1KcY(Z@9fct988OJ=USuV{TNieoXtO@ALPx-+pS1~qw7RisQ!JO zKiIrajM1^Ta9Xg zarRoXNbhTOBi+%hvUT$vtZz1E0r6kwh;V~jFuG|YSi?tC7LrHE@;>jqCKxC36ST*A@ESbf-W3LODF2oNjxTts3{|e=~&_4 z?y5tNs|zy;JdSx*Ri2jUunLbInh8k8;cp&gDwJ8Eh)w+_wVZgQQAGuee8{dd>(7+ zx8fvRevk(EePAKGcPBa#N=x`YJWBH#`uvj;eOf-L-hrB-|Kg@MjB=7I9;ak4#E%dDS@U_F!6SftvRz%e?rPTUAwO zs@?TV`@9L~CtkKIi5Fe&c)b;-af_qWnJ{!-zJS+{vq^_5xZi_WJV7;%yLDQZoiMSb z{=5W*I0_`3Q9r!hl7N&nJ~z8BvUD~O68`Ug?ZrM6baG?Xx(~i?0XfLM#Q6UP;fr|s zmi%Vb^kihxN{ID-WkavhQSE?Bv`R)rS@YFM1I9fUh^fUN=uhF0v7-^#ME&1(xM31V zOb*L^jjNCqff|7h^9&D=qF`Syf^Q=L2uhdN4!WdCO<`<=2LJ?dde;N}GyAjT94;!> zot#!5M%yp;cL!ufw^}29H zhD3fK3j>fv-peU?u#ST>9S5=EHpFPzYIH4uzth^ic^MBS&p1OgQPMxvuZ~>k%jxexapd$ zW_^XyKu|SUXB62~BK>tgtLLD>HxPJ%?)*fe#Ks#pu+|*zDi*~)A7?Ca7Sku^>jclf zb#EQ9R{>cM3prLX0AWkN;$>)nCN*4O#&is7A@2g&&$|TIT*D~T7p)#^=ec0+V`w}q z=)r>$zqWplAG0_VS*Q6=|3weaw+^syHShLfd}Id~!Ta0iJK~7nR{QiRM7zdFs}fU4|C>EXWVnqE>t~5 zVbhCR&QjyJ-v{^wdHc==HfI*>C0L$1AN~?k zu_j1ZdFYSN=41HCPp|-b4#C9oPvCG!e4%+6rmNg7mD03e#9UHrjgQm)gJuXr7o5%e z+iJE1b#J?SH~8kkUSkg{;v?d3j2I~5_531EbW}WkGZ;X#^rU^cz;k|m{p(y$Bwi1I(k2$bs;aAsy@Y5}>S`4P~=R=nuH$^?s zuZ1dCriY6^2`~NI<$f>2`KznfRvwNUfn6FL?f=QOD!vj4GDmcA%D1R*?syZ`WzB2Juov_O|)kN%+%k-*M~f zrWfV?g0u5%!)i0=Lw$@P8JZwR{HecYLwPr8EqQ9lB)u-O(D)6w^&pE9nNorNm^FJ4 z_n33^6yrEV>+%W$5&3{@Jg$bSjh^SstXq1$u>SQI)>?h65iR-MM(yhC^@~KSB5I!( z11$L$(%&ExgzolD1NjHbh4*UW1@40%dLN&i(cN~8C8SL*DoZ2w%@s6z5FQK=`x@AD zZ^e+3Qb=~$Ydr!_NcSnbsH>9veOhO5(zT|4{F)T?@F%b0Zx^5^x%Kj#Fxj(z>Z8wk z40PDN1iC}!u)F@T)};$G{>j4}Gcl!^lxS|u0p4rySRARc!z*+9%Dv1;yzy9fLLZTE}ECTF+A5BYj(ZV)8w+kNQc{QYyUh4MDaRMHslMEG!ym ze3jc?XM}hU#0d6(L&q-VWvrO~h)47#G<_KxSWNBjo0i7krU|6?^op7dGs?z5(`6Qw zDB2;wiv6Lq)AKfk2Z+Yr2rM`aExrzg|9&LyA16#j8iR-9N$o^JUpHlsxexL zqf)A(YGG;}iAQm6r#raVyVI&_7Bgwbr2=87&~} zR#(MK;8@MZlm&NO)?4c_XeqA5%pw*ZJli0o&Cw)LU4yEkjc`)h zoO1j*TW;oK-8oxe0JXT`jBY!-U8rNGfMHtJF4*7E+O?F2oaFcD!BX%@XsG-1L#DWv z08ZL=ydds*96Q!=)-u0{2A(s!Jg9H!yHlgZCKfnv))J20Ocpt9O9%keliIsPB%tH} z5sxV%{nIDlFU2A#LJqb2R^q61VGeGfAzQKg8FiQB&inD*-Ib3nZ#n+w`gUAoA^xdP zKzJRz!H?lW{{*5Z!r98?N{MJ-MgVZTfVN%o2MU1z)yi*3O0uK9ToSw(ToUyD1AT7k ztaiV;(9Y!bQv5;M-}H6~oo&A8zn2|)*`r^RMK4af;ye73agy>vo4w2CDj3CVych~k zft1fXr6J=KJbo^9ilm5(4+=w;y=^<-ORi$xUB1^NAuM>>f|0U7zgX5Tx zc8cN{1T=BqU3)e*8UToaiT{&EM82hwUHAxe%n9(uchToG_)^2h+y*=a-URQ0gV9kl zB~c=gQqZa|_>3iGpc^XCRC4q+95qNS)e8ZQm%l?$?Oo2zRu+h0Wjsdyz1nplx2zJZ@NNu1GNC8&-m zlhf}x)5%{{z%hp6>eS;>dB5+v2DCb`hfWqqm^viC=Tiv4-dU?B%IGADiGo5K)XWOi zZ0jeOj?(}enn z`2tvo;+zmF8eN7t6b?j?)#c|Y&BU3nH`t2Pn5U<^kS&m4o$^ATRz#a;iFmLZpNE-1 zGus-$GCq{GLcYT-+WH+#BGR)9c+}Yc+%XaeCJ^1_Zvrq61L8m{ zBlkj(jsPe?qj(&LwM8=3*f$r+uOAh*HBnd=r8Ms}+3-iwZCIb++ka0oOZS)7;^~aK z54Q4Qq1gsIZJ-oqCl6bLrJfsW+R5I?lkPUlz1thlv1v^WMG$%rn2~z=)I#sEjWMm? z>sb;CK2kLgy57V)`JSE~5JW|xmaz~1tJJ!4fUBh~4pha%mDZ0kIekd^Xe;!Hp-8xW zto|Hoe=*UP6%|$ll=HWG&Hc5MGHY$a6*#svPF-AXdKwZDVt;Ok`O*>+Ay?{JWs}r% z=*875tz|m=AcyGPt7VUdXlR5@lW9(tMb(fTm!+A7A(>5=!uru`=Vt;T-rHdYbQgFH3xk(PAI)^yVckREq*=MQQEQq3&N5wp0d%9`PNNr#stnD2# z_lj!@4SbWktA9@&&bTr}zm7i8d0IKrDeRUu^X_kuLBLhU)$)|Bq`pl+mbac{tg zH%EZ|?_rvfIN!DGn;SEg^Y@8DqT%qyy(Ew?Ni6+i6)8lst@fpdS|kGuDjWr zuN`i(eK9)mKkTlhJZmdH8@Hn`5rNvG`Y6dylTZIJ8>QS6H%z{--C^Fpx^x2ad??*e za4#`$Bq+a;`cft`(t?5o2wv3~S=gD-|DHKSeL6e-6sqPXDFYfr)*pxc!j!2qi0j+s zs+aHchJ21HXfXc@ue7cUzDs{)_G?WQ6HHoJtbBK4`ei8K_c{Kx=$QgxpLFmRHzG>e zZNm07`p1(Klk6m(jbR!vU-8d_lwG2VWKrK;bw*-J(8y>Aa2zUb;}3w0*1Wix)K~&J zk>4Gei?+9)V>=5T?B_Z99If?<5rlDxwm06(K$GsLpQJ7eXU6T$Gd%KweF@lk`fk9>(8U zLOV%eshU;$2d9%o%R~+6wbpm=WMU^obM$UM(*Oh)Crr+FVN60}-Y7m!o(}}T;hS`W z)4(r8>KtVoNt8}`Tyx0C2mq+Y4_h{K^+rg>jUgVKzccKtaGd&iYX=}+lzZL%6TmRY ztm}H)G$`U=M$4J`yzMV_RxbU-!&l+2g!XhXnucSg{<3 zbL?2#%mxq_i0M%!%VvCf8(dLRb(XqRq1lW2*XzXSvhZWPJk8%m=)myz8*7Tflsi$~$D>e_9(5_NWu;@|9CxSh@5|~S!3cyfPu{%`^}++>s2>FW zLvkjFQL6$)c>Gj%>TUKXV)`Q5#XQ_RQX>ZDxG!Va;cOJMNP_k_U@fX5)h$;jUy7l5 zG)A=`M3y*q*B_D1NFP~1QrY@3cHXif2U{ZCnTk-EtH@r;U&(XixOM+({h05~UP{w4@syd1c{&uuJuU_Xp zP=9!bGfnJ*#}dMjHz*ef+28=g4&x9*5KvZhBi__O1#Q7z50IrRQRDls6D6;D%rm9w zUui=CI3&QhFCM4ZN7Xvqh3cjWPqNtEif9W}HK^4B zAh|`%MZ>PT)g#}ZXaAAJ0~jH5uaB{=m5P16qv^>C2a19aC{0oWB6@7ioRIN~^tDL0 zu6Y#LXw|N`RkxE?nt*-}>r8-zVA9*%)a&oc#~0uwPU1EUb(_Op+ZCf0xj~O%tQ?R6 z=lEis*RW?Y^sR`ZYxCe~TIj8QS$wSI8Ku00#6jV){&XTv1ElfbqHW`+sVc8z*tc`a za&BAC1IQE*M!8AbV92C%#UetQ_j@$FuB2IB_-8ux;B$v^Yj(-0rDA|5yd;OY_?oH% z`!dTUj0ni%kGsb!p87PSjVzHb_8WO;51kpE^S2)Q=gsw5=Kr?#6LMsr zWVHAjNJ9{r@k;1l_60#;+sn5f+YX#wcFWZ@m%}3tB3X40i)d zJYJcpJ52?o=MZ(16zTCL}2a8&uT7_nXrHMPWL!UST-O4sdmhr3?P)z*Z0Lq$UF5I)hOft8>X z5aJuC^6l4smeT6$Lz9}SS6qGt6^RCE>*u%b%o0@&y& zw>2^GI0ozeeX{}K&wv=Xv+hgHL>=5+5)|9;R7x?ADs@l)ghdz0W(r8y-YS}+3`M*j z20*FaCJ^D#D6gP=crdt{2801-mxG*ciZR=vO!4P6)8i2tu<9t$5dcA>8VZwKdPw#g zQEyKdm!l)*9>4OYEaLymn0~vw<*-QY ze|TkHsC|Uqv_=d%F1ddv`PNa;GVPI0UB1j_{?)-=nfQlQ8!wwuqSd`y=(55wohACn zZpeH1z@;wwRvEv?R|sA=bv|!P7x*k8pb-51IV7^FpdF_VG?a694_eD(;u7>LJmYuM z_ueXg1V-pP;7H>=q*vQ!7OAHy!`bI}JigP}+0c$vSVkvPqEgTH;U-DND8pFUCo06K zDQ0jGN>C|#(XvypSEmyl@++JdG7}y?us2f3f^)k_SFU+{m}ndMmzh_iig`!IuXRRntX4Co#Ia=&X*jte=Ho^ zP~+EhGF}f{g3M43{%V`QjYA|=-Xikcx8wt0vubRmc51RyJ05%+0nkf?%y$zQA401; zqcb2K4S!P*B;w1H*Ush4&0hwtorsV6&TUSSC(IpB6)iTHEmoch`zpJ)KJi*Yl8#e$ zJ_M7;lx9z_pONH+u+;w@oj$yYQe=955g{1?-tiuJeh3N_NLw-m;R(mja|n=W-K&SU zBRA2A@$iwSsgJ;8@?LqXw&Ye$9qARPIn_o}Px%0<_L9mPxwlk?PknR58_| zmI;vaosFam!rKKS@FKTT(E3Fdie>)zH^a*U(XSu(dEZ|6cHj_$E-c zgL}0!Rg~@REiAid7g`uCSDH?uL|$W|>0C4L4?fI)P`+D9eT)esZ0wB%|M8GW%>RD? z>p&F0el_LEA17fcs`+_mB$qEog?u{kANK%KAIo^mt)Y64x43iGUNFpW<(3QzEJzwL zl@p0&tXZA?h|Fa6ObnTiDV%Y=lq@UUgzO_+7ob5YjMmX@D}}8 z#;BIPOV-nD<_yVI>kG*bA~slAF}?eWpS*`6@$mtyV);M4JK9a{o#iN2{7cTm;3MT! zZ%nbT&=nNwiUJtI!tVd2sJAOfbtnj=y**k>WmtH{U-H}0narD9R^jaf-rXO$`BqlX zpGIKQ#p5?_LjgQSi@&9*p&m-?kUydEA13<;ZuF-DD9}We;9LX#dyh<~7VBKg`M-^M zw92Z*Isf{-BWX6&%S_f{N-bL_81=tt>P51~q;~W#bFOFWng+#NWS;cDVHffPluq?O zOs0qQ8_vaNRsW0WruBxCy2i$5%dl!tAprz`kNDgDc?uWO)c+u_aZ^}(y6z>1+T$oQ zZ^GB-%>Vzk`Ve#P_|*T%)?RLHu8KE^{ILK`E(ibVd4Pc_vl;z0_264)H72QcqWxygPy$m}`odAw{A49tThc>FczGFoBcHW1LwPp@dHzXMpokv1 zRHPg8X_P+2|Hx?(a;V;%ol55)b8JxP-{|R{>;xG{1;ANpdgz~ctMxNA6SL-jlhFLs zUt&~|>XmoZI=MQbU;0qKI->0=|E0rPYLE5Rz>b}t;pyZiWGbD1rfftTUx%GClhJQ| za-8Mi?N?ZDyIa#mR8)*WSlXSd5| zC$e|*`SnZGwCIxPyrhH`l^tX5N0rFF6&2P~qwCea*T2sd9n$-eEAi%&ckS-;6QpkC zf6SoGr{{Y-L?pNl3g&5D#cRx6K##&Da6KdfEH;P}?<&45nj=$PJTyYPc zFHuzW5_f)u(^%%1(EgH-u6^sba+{}+WB1*A4lr_Xrp%F%8>5h#`E(&x~9~Pw;teHuCZ7cBPolG z;%Fd9AtQu{G0D3?t&5sEz$^fwT$q;87$-&%OD+fq*SeSXwQU%Vgcw3M4&n&ZN_nt2 z9R%Up)+tJ0>jc{O5hZIyQthmzPom27ESR_3ttxt_r1U^Zsq3(^*#X&*pa6-WrzEmY zHEOU{jCCo3wIXUA#%TqMCCm_N<#<&~z5N^Vj~n-fS9EE`irRuz$mEHMs;xKJzB zs*KNWbn*dG+=1<7WdPWK%h4@= zY{y(N7bD78A^`vh_^*PyE6>`x9tJiqo6TR(=tbgY(VZ+NLmlK+JGuXEPjyOVPB>O6 zDlYt9XiT-PL5sL`eH)t!^6&dGwDuL6g`My)+clRl+$6OKZW$Hxul%=$_maBm`2!%T zRkuB&uIQJZ zXb4a{F$}>EEi9bvaCUn*f>^<;j8jAfu(xlwO~R3I5fHl_;RrP_AzUy_&r}?RAnJ~S z(P&;&R1_8K!ZrdUnt)~mba3`ST(Y`>HV`|8AR5h}0HF0C{Izsrzyd(FdH^2l^>vOJ zALZf27_VO6mSlZ1e>lK5BZ36*`g{l(yA0x&G5>cefNa<$C)AD`Xx0N}3NX#xU6V_j ziCHW~Bme-gaeknp)zGHKW%)`(l-i{I^0|&5RFs)4BArL(uzOWL%6=KDrBzji`p05S2d z=|1)V<tZ71{OMHP?U3B4l7a6cx)jCFnRzMvVRWuOImJ!#f z4$s)eh>98pP!to26;TJIi$tw;j8V0MDQLwAfB*s$K*W$I5><>70RRXJ!|gz{#TTcC zs920O%HVMTJa)T&4}l#zLJBH4Jx|1<4vTs!8UQllTIt}74x=%7Gz?t_fQBO&)8G2L zD`<4IZnp~zaWF(sXAFgHFm#B38=WU&fS?5iw3MUaS=U+YLNn}k7~SNcHbyrZ3Q~d_9K0{G2p5+Wy!QG$S9M% z9gyg2IBdy>wLS*G9cyLA?KrN(sov%_WMP~G0G#PSYJC!U02~9DoE3-Ym@USVWC8#H zG)j4t`~v#Ef1J`@Z9=qQw6irX&uSgnlK03?coF$%Ag#EIU9_~C+UXB`(LbDQn8rbC z+5Zd5@w@WdUW7u>Ni(G%rpk;JIagd^O1ZH33_CR6cf)7nTwU}*YGf#gzAmm5+J8VJ z5m{ON@L;j9ebPkGwz%igxwXost6bZDYaI%vjc5>gdoy8O8r|hfH>fdF-QmF4#Du5= ziYiG>K+zg!*94G87~*KY=t4%wMvD-3*ayOcP%kh`6K2%$JmiL=A_{6i6nX~EHgq~Q zDo#ZK0;F}#8(QCa=$sZtH&Hr&4VD{o-w9xR8)=9?;IZYV04&w^I&xD2%HC!eB5O?wFt*tfSDm_nh|*6U#6h zbd=dRu8=UhTZE%IsJlq}9g!^oUP?83OX_7_&Y*pq(x{h9Of~aiG{y=)N)Abhfcxk| zUj{#&@WHQN0YHoi>MPH+x?WuC-2>RC579K+=as+=&H%JH7w_2t3Z(+<8sOX*=P6^E znaLuN006k85$8d$Z}rVd<|bQP0`eq4o&QSj=3x~?i}baLpPbN&5mdYI;a{Vk#XGd1N9g%{ zNr#3P0V3k!QTOd*VpD~M<|F1ID$;b5;3cP&8X9_YWzh^n6iB)}VC!s9K|w(U<5CK! zh*MNMMO5jAVKg#~s~~`2MASK$ehBA4jS4y+y!YNagsWH6`bSOVhmJ(F^Ow;2Lmawi zfm&LabcSDB!0jEKM@gCP!rF91JkVmN6v3_lk}l9WD408hCfX>wQ>~xXKlQXPyBLbNv%jzd3;@>oWd7(=6dqdP z1QpMnPi&6jv8 zEFHiB^Z>91JjbQa05DOj9MMxU6H6wR5dZ)ndZGTnkQZ)LjQ>PDn}Vzb50UkQTZhyC zoSpe(nOA$BSN+$0XIH!=jpJf^2|R9wU;zxuhpw;=HRBBw_)Eq@2?A2)r|!0 zN(y-i-yHSVpDicolonU5b!HtJe_Cag@rolM3&&Qp)WxD`=3K$&8L5(8RO={u*DN>xlP^aVKj7#iyA#J2llW-VCAmA7X72*>dre) zdz=bRxjIZVI2-hcB^gTCjbiPqMbO0&2F_dwmPNQLpYqu1Kv&(N3J%6o9fdIijg=nS zn3p8=lA}AMojPzjfJNYEPykFO^^417{L@IP%84tP!okad#Z9P}@LikVWN!<#2@+){ zSTxkrb6)UiA+K9>XJ*f>&7e`=U>@-`6ysw?)}c5P3#aH_KhGRP$YZ1FK+D^Rx z-l17(Ary^TGZLA(<#tT-udE`j(bfOEy+g;?znlSdGUG2f4~-M!=F)wUr)JAV=;Doe zoP}!9Dg+aVzWn$^^xuAoM~_xauE31dY{)c_0)do zHf6p0Jpg1%qfd4gwx5z^X_S1k^8y?5br|E`B4wc}m>>pMK8AyZ^AbJY{RFpH)4z?a zw9`PMt~xteL7#|QM_$n-J3?xh%`Ci^$(qkrX@7nOgkH_VF$+5WxNPWEJzQrYcoY7{ z-#FXu*{7EEJ@T^0ob+}l1ierCm*#Z!{FKt7P261aGVgWCi*J`+A{W)sSM#@mAc$J} zW1MJEtyxJ`P|qN0)y1 zUm;0XLwjF+aqqO~xGU47am9JmF0(gJj0I&~AX(W)@?t3kOyItwQ@EmyIt8J3^W_-tak>M3+| zyt3{8i>9TR=}sg;{gw0PKd_?540%s7XQ#`mG`BVgvc_qxxD>-MSp^F78$@bGa5z12 zfK$M=U_=U@(})OQRIJ14B8c)LbxW6Rq3Z)rXJ=CY0Kf_e000000J`s7bwL0C045QD zDjH8|XJ`MB|CIlv|IScQR8v!JV`u-p|Fr-0j5gyP2vUBSB9V)`17IH*-gV8o-MZan zP!Nn6)B!JDF^ zqeDLcEHVq&%Y-y`QM7fFsdKrzH1=b%_5VrTZeY}QSLWGm1=|1rm;dG5lJY%4h6_a% zq+aTqR9+VH#7qhxAwddx7pm&QT7#+qr;Cm>1qz1~QN%I{;lhPrj6fT5I1=&@x^ZZ6 zgwO?yO5H0cQ``jclgd%4b_Q%zLg zKmgkLxZ3>zxCSx|1w|OvH$bhFB#r& zwF1bWa-vt*U@>)7TZNsKSduJ~007YYq{hF0ZKT*R)*0;U^V+4UF}k})?l%jvj8^1l zNz!80g3{@}%m4oV{hkkA<@JAFGML1$2#_ztTMr7-xBJk>M&j8XX_4YcfZ^K4cYTd} ze$k3G${?zK2}n!@YOGOrw%=uF3W9<L_#xic%9%p%DOvhG%d( zs_Bn|pozGnpv4i+8Aq-VEpdp^5NZ&bAsIp(VEN)i7!aX}BOTo+3_*{xsn~w_Sf~UA zOf+Ys5@QcpE3Rv|kiDwGffUcnd{IUINj(LnFNiG5a z04XuEl$;DHDaW_|KukJM2mFu|J6%_PRh3vV%@xtou~JAzPNJ&V;@QFS_kn-Y|E|52 z$a~bGV+l?v_n_yl1Lx{>$SN@dpa{{vAXenj9bUQoRO@?_=Q3so9f66&LF;6Rf=c7A z2@tEC>JW`xm<)R{C8`|?UbE7X(O<1hAao!V3Lw!5kTL`@MYR1iJRYiIRIC9>3G1vt}#jh()JkFm_$&T?A;Q1E33|gg84<6mbY$pmHd*P8vWn-Vq`R!#&|(&RQFS zv(B+u!Ki}~%E?w9he5&$V_|Tqv?-!NVyqd^6_?m@&vns;<*4!7pmrHTHX7X`LP1kg z>pj2;0ubOOJ9{jvc!d6uFjkPKdz$lMPF#Fcs(4nV&o2T7m6eWOG1gLsN6&zo8;qYQzUYhgQDfhgE zlLi%3?^?T67>JT0=(BE^zSkTgl z#qyD&0B0;Vgsd}$!59T|`{nshE8{WVewb*rIE+|eEg}xBfq~IErsy_pi!WN;xWX}@ zIY2IvdfPHY!oc{;f61b)&kyWaoV)B@K)@~+aYd{>xy712jLO>%OJ+#M<4FEir(-{r z`cqFCtW-3-N$W1?HRPQGmsPpeL)oE4s4hSP77CT_n#q@TIfZ6;MQBvyTTaK4zHE%~ zD=I`5GbVd9bNg;_wun<7-GOU#zjxdp8;x0C`i*-fqj3XPeC0;FfboDT0kEKh$^b8_ z6Bl+7OX8SF004}_DM6sOUTq%Sk%&vd?rx4YXy|)a`FCCi*DLZm0Qv5y1ebs1HbGlA z-Q8bgPkz4Wd7_Dso}eYa+&9k|+h3W;Q<11r<~WpYF(F?NrcK#Kx7oB(ONL#kDw}|X`HiPv(RYL8kQ;o zUC7X)%W$3*E(LU?_2}?HqdXyPo8#djA|O^W6xE`-tp^uA^hSi#rG#O+oeE9bet)ot zqks@{{?Iv;B#HtK1O+)57P}pTV5SEm0QuaxbmTKb$9UKsOY=`B*<&i;A1A9O}Zr@l00cGBIa;^LF{eB=Y&8U~PxUv|~fO7VRY8pe*C z*~M^)(D%2Smm5-SEYGZ?2T~F*05mQa-p#$ac`!dR3oqt*fg5M>eE)52EiR;pV1nRW z*}QtHcO3T@5C;G@+2FaJ=AR;EGrO>Tel(oo7#~t(l%&=zG(kym=rN@;5Ldwf`3izlO?WR+PBbsp^PkTu?A2Xwf)*>4 z)KuIusNJ*zQzlwtN=6f(OHXq(KMws_1e{L6E1TV0e<_bMO;QW*`n=V6WAT4O57Ys+ zP@w=}L|?rzb>BZvy?WSkraZj7{`R^h_KsK0nS4b6qKL&%&QtwSbX-C+RMbVS26@J@ zRmr}I+^glp2_fRaLnUfM`FKoon(|9Nt$TaWZmdM_+q+ew*R*Ulv?Slc~XrxR;O0-PEMOx zzZUDeY-F>x0l1=q;PvmbFEli<*lC-0`0I!Nm{u)QXRChK?u8N}3T5#0BIer8s&Bcn zPlv}9zu!FLiw~zOzjFwDPSw-&5{nUH?6E$l_UU@Hw7p{?>u*@{wMARjCB4Qt#Kj!r z=}D3hd~R~BX|>qsP3#QHh3kZ~Xk{Gt$*&K4oBn1BZo`GB!;Z^GOSbsxE*`;Cth!PE z=ZK}cKAshC_jTFTW>_!65Ub7rgfcN=t|6mXd>Rol_hy2a=?X{hM1MLxI*Bt>-y934 zPn$E)efycQW_Wg^ZMP&rgCzpBx^5vlEv-g2km(HCDvBa0*5+BF1S2hjrjUwc6mI zq7D^AwBf@@w|fu=`T@G>#1f)&`QS?`i{S+9WjaB^nDcoki&Pd8p!Z6YQ(WVt7%4x9 z&hrx!27BLdm2JXZR|0Yu(c3MdVU2U5U&tAN3OH7`ONSVF*tvu#u_TEEAU2ST7jKHM zNiQxLZ|D2Z>u$xL?+@Mh+QwdAt)lM~bfy@3(IA%8K|9U$-t#)%^-qHPueE<+FG>=W zxtK0ns>QHb?VmD0A7XS&@oRp0!$P>3YZz;tWDmjB1P2jOOkEswhPPP*KDh zC$5|haGDy5QG}WUr^h;V+ch$Z8mA%(>aap12*;qKcH%L{5ylAY9Wg|0 zK#QRYLBSdo6&1BE9njb94u&uUv30wQ#7^wNj1f54?O>oljZ=(@qM)J?fWW{WvZx}c zy0HL2XEXzLyFFMl;B=rAhA|w00m2bGpbJKf0H6+41+-ygV1zb+){P_3B3*Gb3ax82 zLkEBekvI?unubwFw{;OmVKlTo>eAwHV;F$e)h1{df&zxn9S9>r>jED8tZ__o(H`#E z8?Jn@&zi?fVeHEpi%vq7cNIkzGBT8Ifj1qp7iP!c*Nxr+K(2s0m~a8R?MX{R+o~XP z`7B_nxOR~_kC}*)VgvvHkYEbgmuS}H>vwkcwPIN$LqT%6>(%|;{J9R&)2<{zS$KPc z3#|C_4&+^H)P8DR<6c7unJ}d3_{NAyST|-Q*NbgV#^PBF)`bA2Sa((Qe;Ub%eUuJFMU5>g z#@dmM?wD`f9D!}0J)CVlT{zp)IJ*|R^9Z!P_Af7riZxnVhtuJ7SOIISQL#n^v2Lf^ z8WkAhbXWuxwTH7k1nkBdr^6bB0YU{p2+a;U*p1Fblsz$wMgf=G?RIHI*^fpS&UQDC z<^j%bw=H!LYgAMe5H(Jt2mpw6IE~Wn#;&nZ3t6)cMn~6zt*bc4BlGje_nl z0^M#z>qc6)I|TqhP~&u10o`u2NAu9SoMkWs3x5Q=xZSwtje!AfbgkQ#C&4jr8CfF;#`ey#)H-U4=j0bUUHJFeSYm8-}i005AfN1vN*pQC*7 zs}K1b_p}z?s*%1OA3?e~U;l3NcdQy#96FVz~oN4ow9D6$|gr8X;&I zfb8}8Nem_blZ@_0KRI^uU{?lJA@ZJ?Q?0JQ9EC$lGP) zURqO~vcIE#3SNhYTYEbF>L)S2tMx-CA$qNo^x&>L_UQf7l!o zNc(tY!~A4Sza$*{*#|jY^5MzM%WO=cuOUI1&_B@RC%k5#H!D3N15amXQvd)!EeHSr z0002G?_7040000qDI~cY|L6bnS65e9SaoG)XK7AiW@TUhy8poc#sBc$8cptZWF_fo z6ojS~>g(Igsz{48!Btddc}z%QJmA&;sk1|wVoE>awE%iNs=%PJdgBUk?tlbNuL{7u z)DK9U0rcqJ$F(u6G51vI@>5BYa7YpW0AxIlr!X5+J#a&Veknq$N7v=}vN4rRnc24B z=T?#?v9|xG>?D!>{lKc_xi}0&WTTpub}*~5nG~*Z zN&roFM{u9%xpQtlYUI zW$?A~p58180CpK=@==_#jh=yu%qWsy#Y`KQdoYFOl^pksh=MenZOwiGdKL?UlR1O0 zD#RnS&Q^Re}tdEo`o3a&~Ir@2;F?)8kWOu84H?f9KYXMl1^eSj0YAn>A+j zW_M@x{l@vmVQdLaxU>|7J^4w7)wp@Rw7**}7Em&cuxUXp9~xn`Dq8Otn7TE6Q_ads zYjgKc8i~C1p103S9JVR?>4^D z8LOn7(Qo^Y`S)9&SFksoaqmw4tIvAO2(&MttkcNiv5y0v#oqH0B6d!{UflH^y4KEe z7DMJvX3?;J`LJgJaU`>H=l_8j;=Ma^XJp6BD}PO}XZDUhMvVcu4?Mk$B$LP=tr76_ zXL9mX^?QA&vIFk?T?zs%?(?RG2t z^a_N*P1tk3T|6b5q)1RD;I6aF?$X6$S@ELSe&K4&QhUZ1|NC68iV^?+%Y;2UexI`z zz4Xcx=rj4>nonB#=sClS|MUaqh_>mFea)Ed zx6auN0E|xQFY~N2O@9@qQ~p<)622DU0=(WU3UxqEPsnyf0lHp8M%qIuuU+M6D#kZ{ zeJgXkXh$iYpbN9OMdHS(;qFqAg52hA>Pv4wwBWXR7RbDUb>TUb~|=L z*mr6tNXf`;Eq&+rZV>W_Lf`iXTTyx(^f2o!k*2M`F=8=^v~a*VP$nY zF#mZ)CX=0Ar$tm?Z}enk_v(B6{neticn_Vb zk^uMc2X$Id`rq%$ebC@96>pFPbNyuz_cAIUmxzN>aP3ra7$PZ46&8WmSjmB+LxeG2 z!!-J;7qrXdO24$vG_&$7WJ2X6y||%DEnMN#sG3c)b0Op_eE!G;b>?NP>t5?wOK};3 ztYkb}m4BcAZwe&+A8dE+S2x3prBb+`AWDf#OQ|`Xwk&PYMG-NcqDEb-CLLqwbuNS^ zBNA4{frr{c1*qFCA_f3-Mt$e<(n#IP`IJieD9uaxketnngFQlRJ*wweAE@id5L{B< z^1tdo{rSIhGrWJz&imT{e{HVkO*5Sv-4gaIv!3Eg5@g(xMqOG9S~>)^>bvq(330C7 zb~?hx6RZ)zp_YRBoq|abWGe%AK6I-N_x6pDz+hQxm3XjV9vJi)#unl zb6xOf#uKvee&|<(5ttB+I-@8mD!#3>1}|vEpii)!dis?Pv311O!Ulv&p_S$iy_Kny zi2@D_9rF0U5rN4Q9Zwj{KKCllIms6{>skl9x1~ETIXStYN+FWgtyz~At5w12vH(RF z4j0BDA|l2(+@(~)2UIb};eb$TR#gYJ>U3JCA`W*8q3K8>v_|E|PMKIL=0egF3xx-u zbhwxcQZw!+mDi&F>ATY&h9@ctLJV^5%1xPV)hL){0~bg}w_#1q;iTrNraD|YtWimI zxD+rT2E=9RI;<$#0MyMm;YB_g$#)4o^y-seFb}W@ zS$+Rz4!exL^C^62>eQqY0wcGr-|=@A8r4+%dV27(o-Vn(cN)i06xSi?!n#`#kl{QnPeo4xn$W{QL>13ur{i3w7-stl3>&n}SGXXaag#b@iIlXgq|(ppeq5Zr7aC!9u~{S6ZfgxrZV1 zTjZtVysK7qT2H3m)zWu+d2}rCR_{fP@zUmWA{ysRDcjn!mg1V_`D?H3i>iL-zkB2w z1-A2Vb1R&^pK?X6CNvf!h;f^Ez`Nx1aE%?>qP5H|Ju%NEE+lru2A}>SFVgL6mwp1M zm`clX3P!T$60|JWqOC^4HE?0~j2@*=#;itM#u0rb!PKa6Qjk}|QRN($5~NL#3Jh}c zU=zzY3iLpd)>+r3M5c*BIbseof*8q*6jZUnp-2D&2~KgomTu{8Y6mkKYI{h9ppsK7 z1sH{JFk)i(V$%PwuXO4RIRl6O1>bFOrXMKT^A||B7cVR&z!M1%bns5==p+ZFK z!Yk?v!FZLpVz(!Ed6K#a`XDf{BL#;d3?K^JRqR*2A^=1^f3Qahnr>jvjM%7XVkjn&X@?8%x9z007Y8g`5n}(9$y9TlPb?{i%UQ6Zm|V znI|zbDIy#dmuhv0R%AWItyM+c`bmDf3XU?{7ymYU6b`;ETXO@zSw_dg+J`DglXiSj z5biBGdk8xo2Ay<=fA++A?I9T%BF~SA%tBO!ELF^rX3o71{~hAjo6o)d5dGo){b=o{ zZ$a)U^le8)n=DnNrk?3=QjjzSPXQnXyG{k5expK{#&Z~##qy%eRK>E5lmsZ{6&E?I z$zymQek%LO>HZ?wnNSwSp^#*zpDrwjW`H~#UnWwrvhFjBZhB>w*Mo}-m??%aF0+kh zopu~r#hhP!(HyB%YNCkD3{xL^*;=YqO+m*vjY7TyXgIIdQ@7l?x?1BZqi1W!ySWQ@ zd3_!`+Uj=2(g3d4cC?}MGXq3_qucbRbgrgKNGW#^?8E;a(l-;Ruuix;^~jc)MfU#H z9SHy=reLy~(FvhRq~_3$JqgG$R3QQ7mjK=>&FPaQnsP}B6|2*jKSi$1{HZnC2Q}BI zK3OTH%y=fj6EwdUZ+-H!W{(7*V*7kT;szW)c}M`TgIlRC00RI$m~C!_AkF5uQc0MT z2mk<7svA&Sa4jXZ`OHOCTaR(w{XI^-IgezK+s6MmdT-#|@Y@a^Mcq8Jxs3XJjd+}l z%O7d5^K;C$;->DSfr`nnr7*d1;bf88r|RC_lKbubmdw1>92tnzrpC@#hh9YkQdLO` zFgr(C4}Olc#ksr_@>n-#N1;4fxip>0u;_mHDs4f|Ze_1M(PeZ?+=cckPq(tzzz|#3 zr+{|9q0u4#U*%Ml*0-~0$q3>uzjOPQsk!X|1D`v#(3dH|BhpUXsa`24 zymfw;G2gl?86io4+c3JPlEGXYJ#cXG7N?*B!-R_T+`|9jZQv_&%ddGki2L>FUAS&M zVrjzEj7kEdNYhHEOV&f2C8&!>Wot>AgiQHyd%Nu16G##Oeo^pM)KZzt6mpgzCkn+D zXLm-W3Pe^)jp?VJ$uz7+qiMt`)tB$}ycps`+RYGuMrpB-g^18PD+b>ZgHslM z%!%LR*6-5<(3qxvj1^?#23+pag%;ffHqgHHHB_oU4RQVIv>` z0H_FzZ7YimJlSQ{FyFy8(rr(4t7G#|3qN0vC%e+TrFBjh9uILNYDChh9{lX%>F+i4 zRQ(ZOth$z{MAh%xjOYJfypr*Utf@6mFfF^?4rqWP?Ul!S-1C7NS=f#KiCMJket+I# zpIB!B$-dkCx!X@HLwocb8sV(e@pJ1&n<`p$ch&Oz!5_ z`}Q^cyUC`1Nw)UBo7_3M3rXgloE9w~8p$A?qrtk99(eweeLs6^e5+7P70=L}QBJ^h zk22GVQ=#!Q=;F`ZD91msTBF8s*VPZ1)}~j?Pt&9XN6FWi+cJYP!`I-*%lX zP8IQd+zQl~(T17gLrUdb5~78W<8eCJ$tZST2zfh}o=6-eOUkY5gQ!BviOs)tdfks&ouSb+Y7s9X!OBy2eE|Lk08eLUQvd(}Ob7q~0002G z?_7050001tk#ce!R#aG5T3BdeXaBeVyZ`h5=KuFrR#R12X=iC;|71R$zxrX}OXo%9 zq}BOxIgGR)1gxIy$^E&TpcvUVHwA zCC_t6t6#OeqJ4dFfYrlTzeK3UnL&NvuFI_t!d;Xd8-=5u+>4{U*Kj!BwuWzr_qS6!D zc>^kJBAvhNEVQv0j4l#d`0F(Xdv3xzs5fRk+R_$OtEvFK7DgpQmzZ5;FK%pH;5}6e;#Gv36%76$TOG#vk69pegwN`*hFcR<5OjZX1z z^PB~(3OVn)WO!O?ZkMV8ASi4)b$GZYmxeJsNxjeUewV*A`jfhD^7+fke6fz#6+ z=bYon>5Stl((gOYW;6NX-tC8bmmb_t{dE2R^`uPq%$F;4-+F2uy6zKiU;J~?e0C=J zf7mT9aK>K%WKN5J45r{_Dc1_6>VHVi!)b4thd9aWRc7Ze^kjly0OR3vv#RTf-!#UF zoMY=JV4WJ2gg&^~){YnnAKeC53RxD#R_8@gwyIMfOg05By#Tzh zxomRa=QRPv=6}GoZu1VE#0fM%dR*^%EoKbr@%1@)S$f#R=E2-uF#$BYfQv#poZ>>o zbBYwisHi$r9o9N*!Jw!Sb%@iL8e$PdaaeU&>#)|Sh!M?0hya`}WdaIF0-o<8)X9Ea z1_Q;I&(HVT`QG-$BVy(1u~@aSScZ1z^|R|m{ZBvv^><^4Td~pE~vTUsyfrpk)76zOTif{3<(ux)8UL%vv|xKzw^eW|wKq5huiyPi-L3cP|MxnV0$E5PdyCVWKk>^UjT_RQKyLKJRp_FK3|xsT zGe09fj!4u<=P_UkCJI`rRS&$9)%qs&#u~n>5s2G5)C!as>m_RHIy&#sU;si9CD2gR zA*z6=K@savEAU8!pch0SDg~p0Z2=Y048mya2yFl?hztf&l#2rtMG(X~)Tl!+rD1lR zQ5&?WXa#Us5G&SEi5e7)QvelIOA9gKBd}ZP9Edv);wW^7CK7`H0AP|6+3h!s48&ub zkZ{D#-~lxudm;b;5}p9D4yOR1qCy13ZU<-t#*T2o)B&)E(CKu#ZX5+70JuQ2Bg1G2 zbZJpn>l!+AI@=Ul90Iy9g5g=~a*62bs-y7$+i><{g%~mDVFX<(5=Vvsqr_0^5Ew#> z1Hb@x7eE5uDW&>a^R={x-7bfCXfBtO?wQ&dPid^A0_;B&ie&=n2=eDDgXr^*l-tjG zey{*|PKe*DWKBGPb8R&= zUKk+rJtW{%;QADfaUyamr~8~1KW9I`ds}}D2EatRjis{V6pzBCRINdz&Z$}GJ0`Gh znf44H;;zk4)VYqiwAJ_~q?2E!v%=$uwZ_EK^TT=Ff}Z2Q8c~&0h|!&IWwmg&3 z+deiLJ)?yPS-%bi)|H(Wsbt3>S0^001Ht2<(^G>ORNxoVtDa*yWOd$H8pd606zK@=65nLEv)vIs7b)5)8J2% z7W<)1nqk|u_0kkFOLmdx1^on(IT-2qrTz{uX|Xn~-=O0LeBDO&8Bf6JeglZS>9Gdf zPy1MXUVz1)iJj_{qk59E#0&rcys_J$iuvF8!dsl@)$?!CtS=V*y&(FDbKLPrlqRd#kX)kBlu z7w)C5j_Boo#J|eVD!_fMW2=6h+%e~&n8*D&YhG*b-hj~|9dp&N*|i+FIqjZmPIp5B zX>19gMroT{YO5yf&*s>4IlT7|kdo`;N*7DTtk1HF&!6X?%2)3y@vi&5#&3 z0320i?gDH;eyaz%@31&o`;>LYrZeUNLn>lbm8$nQmJoue1lbr%Rz4ns9Z3Kq|0=0X z4$GXgY*Of}*ZTm`P5irLxIAFk1W9fb0#4)8K~&z~CL>z-c(t;i_p?@g95Ep#(#-Ms z^i4PdydIENE$0AU>U8dHGEc@OG}>oMqb9!1%!{;|jbW~$Y*J;ENc{qrTVRc@R~?4% zv-?u+_*KCQRGA5v8s>j)m!e97=-YP6Ru!iif8uEW)&I<}I zFP}WmGN)eSo|`=>x&!S0)H|v>{@+Dg%pw0b>P0{6FV}Y^C||VfEBzgWOJ5ql{iU02 znTtg|7yql>6NI%g{u()CWH-BosH~Q=m8Kh$OUt~4UtGWP1<9S!%RejUuzInq7ovKK zebM09g9d%UaekQF?LMG;-nn{Ml(%b9NISdSe@)W-QXzs&mCfV_yK@j?wOnQPyR~E? z!yE71KGG&|40tO8OA0kCBStp&$KH_fkOpZ(i<$5WCLl)|Y)5#n*dRPvVXfokHsfJYg=W z>G9blIuTEFGMQyAqMvfM^7`{U*`F*kfP22WP}ppxQhU?u2~*X+7`;_ei#kaJjcKt6 zhdKM{PANPUt(>_9xZxienE^Jg#ajmP^vA-=$7n%|z0cfX)-bb2Yja|$*T zJt{Czj$)Ggw_<+v!5sJmW6nfQ^uP%e;s6Qvj{PkyrUS#d;svvSzUQ^xP5LsaD}MQs zT;!gky9wq`Lz2ygSP+pG#Y@mJ>@$JIFZ!69sX?P!`iXoTsuwd!F<(%*B^OmYf|#PQ zRFPd~qdzNu+^wD&n?}cU z%D%ky<|ag2NwWHk(e-UfJ`zmK|FF$KkONPhJvwgahBdPOsWq*{v)-N7@ zRo%~j&W`22yjq8mznQ&Rb*4@gub#Zw(E?mT4ClWjI9nd!Ysw3G@& z3zP|>xkADoh{5Yo0x=ck;oVn#{?rO1L=OJBX1ryHIj8ZM!oMHvVhSKG1VKFNm!gp0*3tup<>9B- zCIi3vjW^T6L`8tJci$oJUcx3^=(P2Di?>>xUaPlRG|S0RMFl)6<8PNE#JH)D6DBT~ z|J0|lb<{fl+I}5T7pkZNsPhlBY;BpAuLo?;bKOUk^pd7tIjhd8GygyR6>WUHZhiZ# zjh_AYU8p-~eB9S2;_o1BDif9p90U9r3zL`EA!s;mA~GKRIF?}o+jrnwJF!!IS{+&a zl_U3vyA$Lp$D2nW-|bdL>9}Hr@?~6-ZxxKJ{!CA11c*eNhrqw!~1w~IA z5>4aRYE}`gwzY1x&VrvUAqj~V{rv!ZI^ih2G%h02y7h!7b177p=>eJ8s z+wAchEgnlS=h5Cf8XCd7UY?rux%>a-Nqj4>4i~q(;Fm5$ol|rr;nuZxob1ksZ5tgM z-LY-kHg}Rv$LJUx+qP}nHam9qpYwlbj5F${ZmR0C);s51&&;es1%|G-C^q-n^^|=h zS4!^-t=G1aYZO<)5X}IRr7HeWfuTdJg)sd&nAW->+v4lSm08gCsDeCo2m~Le6bvQO zCM5kp)AXb9Xo*4o#3boFlJ;ik-mgG@uCJO%uvt6(dhG+^6tB1@*%)owXp?$^ol>YF zfjTOp8>WpMrF?kho8FqT7`-@@_h_*HgcRTIE>XE$N%Lw!)x+J-lW1q$-~aTGS41h9?9{4}DNeWKL3_0_)nzu`@AgN-ryq}Vk;^{FG)gQpyPACOmGP*)r~g6ix3Nkdj;F+(IL)Yb z7`6U(S)}Anl16~JM3BT&m{F1yc3*)TA^*e-8)q}yf(9RWYk!CeAao(bE#YeM4(`Ne zN`-YL9Li}ES(lc1Bcu5*DAVqLy2qFM4(PytSHh|WUw&QZ;3o|&6;%^`3vdUx27L9? zDsrt!6;)A8kDIbVsTp4aiiK1+)~nWzx>5zQ$7DG~7D&m9jF3BjYRDyC-10~Z?o2cSf9ll;_a$oR_Y&ewi$iNA^PqKRt%L$EeAInJq z3eh@}vIm*(kjOdSt08N(Xk;XOGz9J2sCU zyn*EJQdCY+ie)A~qzC2QsCaDa5^g_9%LqF&vR^9B%V@|1bTX7@yu0D#L*(nrGlqu6 zLrwB)O|x(N9JJ64g!%pF8b20AsYHXkVVK89A%IE6lI1sYb6vGmg3PsC zl)9pai(9}S6>yb*co$}Vl~|JV?p2tK6JFhV-dE{Tk^!YV({IKv;;w8{8w<}TCkzLf zYe-*RW#W!cLXcamg+A1WhPQ~!kM4lA&rM1il^!rVri2A<{QATCpIH?zG%)MhDVxrM zB)-)i___>=Qff~B9v>H7`PnAl^^?YNhWmqXj{RC*q5qL%zYz770k#m#ZkG?@5}6B~ zQ1%jNCp_w$hv+cHy{;USRMevw5>U$nT>9QU|AH-cem$J&L&%;lx%f8ta#wS{wm{rz zALBLwnD?NCn`&S^BTv}=!>{-0LMcA03QqNmPecF!2sq02HIA>4S}$!lx|41VXOPp5 zw}n-r7O`}y^{rkZ+E$K^a<9@?Tf{(|g<8{;rZ^v-I``nr6>R zV2WRA%03)d&QF%42d?@rp0X^n5L|(v^>f>9rwC= zg8MJ8(_37g%s5Ij6SOQrn2!T#VFfXR)o#`H3N3vNYygIP@p7m@-zG}D- zYcQK1h`E*n-nrg}L(-rU6XMgHI3>4#FQ;JU{0yb5&+aFZG2cQ(oo&J8eGzs}2J^v* ze95tIdZWK+D7oI^MQ(dO4u#a8Bw2p5WvI@4L{Go|6)BX3*1!SxEknqHhKQq(M*H*oOuPp zf30j?AKR6Gvi8RV1f>^`?3@|bRBWJ^@!iJWZH~sR6kzNIbq}Sy@@SyXF*bGj-laPp zvqg0EhPD?p*zxZJI*9>rS575R>$n6az<`UJ&iZT2bYr7cy7>rWhXfE0>mF*AWK}v*`!2xLcK3;iq zkZmE-=(MX~$H7+_4(`_-LK=S0nCx&>07XOfi1K|V4&u(XFMm&JtYZW?8g#GGeMXi} zvy0+R2(%r4zHUvBGC5OUPNM|yxq6s2%_n7f0K*@hyxr%9A{4z?qGMJ;Nf)25gBgW; z7OdYtE~f$z0*Z!jqI`uuCWiZ#%}XQXK~ppc+Dgh5-q}W#A`)vo&=;AdY9=gEtV15j zr^x}w<)@8&Z;kGz88$wi;||0e)Nr`5No2CH*Bf)1DJu!$E|a14*823ZCTPY%5xb5} z`ky#QcNN|=ET=w5M<>^A2I0h&fAEu2_w+Y*s*k3)(ISZPZ{U$nuqo0 zN~eI=ArJZ*{l!!d6^b}Q+ImCZtE-H7=$D6}*21B+ztdW*7NM}!Wz-1K%Y36tkuP}}hP^n4EOTE{wj?Uc~w<&hXkXWqW0FRn#r`@_L)J81dN?e`qvz?V= z261=zCZxHB2AykrdFWpl4*nH}g(b{}j!uh!eYFag|#N5rPSIN-UaDWfg?J-i*&Znl5k z)tdQo@RoJFEDIhQ>;p~I-BMibAtm+)dLBtNf=5B_;CzqoH~}zlxLV>zwCI@X9nhF5 z8vyo=jj#qkI|-!)B6Sjz^&(%_bxu{qHg;mzf}E+IkGajqNz1f!XUe~!f2@ZG%CGDB z#s#vv=&7pRwPLuqv3Z<@#|i;=vfFHeK}*$n3X$_i`P4dxHj_nJULB@m@}ru+y7*il zX2}TI;?h3wY~85HVw|H`SwE}p+ebRSJ?kh{00tK>82OY)b;_65sMW%lK*RK}ntxqL z?yiT;%RIo@&;HjFF5oE$KRNrOr}W}0u2G=nvcmQ*IONPc2f-h9tnI~RcEwHgA)>?6 zep~rzLo>M+2O0nS2I8RT(-Cy*tb^Gy7_A;CEj%vZ%RIAD* zmO0?r>amrw(+?s|MV7$EP-ikvvl>sLqCkY-n$RayLoO#jey}spLyQU)#K$p;N5G*D z#VmO#do-&ww$4sq0kD;h1f|QCctg5zfp{Oj&Lo9ts0eu$vEbrc^{&lpE43fOMl89f z>p(FPenz6}Pu45_8{Zms7koB;o57Q@+vT#m(YquVEcbKudGXnR@~2Oqj3!-xt8^yl zHrSeLH?s}x>^+(K^d9DTAH)gu5QL{e$$j|&KJucd8iT18>@JgIw?OdPZ7DhA9FlYs z`WYNirO{OsKeB9dG7pI#o0*(4VVRLepzY7S=Pp8pt1JBtw6H*E+sDL}KSdnZlY{D< z{M3T@YvYTt8Ng<5Ne>g_UagnXDc4^XnyioEKI{qkfXT}%V$C&Kbj4jaf&CMj=Wkk@ zPqunhmy);k^cwQlv3e6cZx>Le>x1@1meNb-PmHL(&pSwSm)}t$1)SNYwL3U`YtHsB zGWeq`WDoqr4sA=5HL#_J$MH{aruf+31SWQNabI_26b&nYx*j(@1utNH1%EHbIVf`P zO;T4>nST*U{10{PT-v~eaen%>&QUFVfn7e;*v;$PGQQ&wtgtd(HaDshEXgrdJe3$g zjz}j-vqkQS1qP&0&GH|Yxm>V1inM&b%oP57L%XGmIfz-FH~?ELj)U*TF$2$96a$Hv zl2Q90wQ7|VJ%*oX*p3lyf0k))@N8YEMw*2Cd{>A1S_C0Y#ln$>8gYs}yP zk!*kwcuJw%(N1Jv2Z~U&&@v^C1$lM@Qr_UNmGSWVh(A(^2NkRdqTXr15$j_sy{75sypbq}+Qj3(Fl!Vt#yfCd>VymRds%tzq?O5S@bE|?n`RqaApqx_x4WJmqNnw*-%w6@XMJ1#zAvK5b8zASdc@OLvgmE}dsMsBpO1uclt&E`I@+TEUe zR99Y^1o6>@iSIjYA8E%x=&L;4rht(~r%fIn2qdv^*3h`&yeVgP*Dej!qgfQcAXHAMF<}^ETE#B zuWz*(;CQ1*c7_2_qOj;9Kr$oDn;8TSG~?8<2w+-&V!a2|k4>$`Hp&j|^2$ zPh2Fxj{8ktnjBV7yhV=@O~MT4JKk=?JrH7}gbV2j>Q_A|B7zhLu9**7C`y_z8bI`F zYCmbqeK~hDcoxF?TPGe?g=k1~a8AeXcqaC+aO`IdwUj&1(#*3!VaWur)MkSG;n+e< zMqyLZb6N#q_|5bD#A5@{b5Itk_2o|B%CN>!0D8LHvTR0=IAgOOBIM6>n+5cB4@)z; zHJ1>`<<`E+j`%}S@3r>6VG|u8B%QCKjlkc%gSv(M0*)=HHqUEyAabmB8@Gc+%J}-; z*Ol6YJU90c;0(=S^d8`YsvaZpDobwlvWIFk&T;KRN z-IioG7BSuE{^W{*$3nqz;^RTJ_CQ62xYGDSY5>S4yse!5H`Q=tP`{OH-&evdW2gzQ zn7+9Gv;+_Hq2k1~4TUsR*3SwDv$DN^m6P|ZC5;VB+XE-}m@I7PHn|8dTAKhSf7TL1 z8=GT^CaiLQF84d|B6`+xfTrZDkc2}%bY2dk2Yih%VXq;aVQan|%^IwY(JN2&$ zfntC61v-<)Bo5g&tI82-xknZn!0rRfHoo-B9b(s8I(k~5F5_}bbH|wNtNEnW?ajoPWMV5>Togt3A>9<2cEzpz}SW5Av2P zVXMh+4_wHBl@iXvvGq3@POJ)|moVxhx$zTa9CKyorTwitTU3vMsu#T*gr20CqLzZR z;&X*_#1*n@A+qj;eK&52_VW#FK90*agV!;tuZ9r~(pahKA*g^e^Cn*lSrNOdx;jNx4f(D3xRby#Bd7(NLss9hy zQO5UtPR>~if}vt?+6-ySxBvOtXTAkbST8`rLWi0hRe#uj1a!tm7kF5wNU6L)eu6T# z$sensd@^N9pLeSLYV7KX$B54z9#~%V1b&wAJFQN*NHxEC%-^&)r`4JqbJ6GJaC{aj zXr%<|_M`8LuvM({6&aAPNbUDLO_hHuGUhF))uH6+BzWkK*g7k7u$(^2DtM6~fVkL8 zM`K^vL;%4K%JEOWXXRAke2fLT#f{pNr=<5wj9$2-$8~ zOz$;|&u+x@`CX>d-+`Ns<22oVvBDH-{Gv(^tk$uS490Cyt4uz!f-*LL_tez8Aoq>~ z77d3BodEY&C}}Ms`Q+F10d=eiT3!l)nGGLU-w@H!YrfEdPXn)|oj$&(k1vJLD@L!^|xF+JbS_g+7FUP?BL%+}5qdY6C-|7IyxcjG&4hIQ61_(eoh z9r?}*5j(*N0&XT0&i6Rg#s)`VT(qhlj>NBM4;r5?p?7q;p*x zHQ&4s23oI-#Jj;QvzZ_MdDI8R<-?vke8&z!sjouw-Gzf9g(K1W!zF@6mML9VBki3r zG4(nrnE0L?ZyAF=pS^umm@ zZK3yi@91HxAFD7Woq=gQEz;7wc^k1lsuo_1oP z<8^F`kDs*$=X4-0ZxU zmj-ncrHU+#kNQcUT=y1{EctfbsINeK*vksG;H|4Vidn{h2xg{72 z%sW9cR9caB!$>t;k{jj-E9t~xAe9#r;)Q>(ca@t3HLyo;GBN+Siy4>k98p5QTX1M&2 zZ%@M5R&TyDiuLp4B-_k&>A90Q>OjL~yOy$laDw@5GUDP93}WoA)2uFIG~w8HS?c%H zYXtEBe25L)NPT7t-;W9A1$n1&^;131Y+vA%Ixr4+5w96-_ib6!psV~urx>(0yKb%c zi2O;hnojeaQ=H2o{4~R-Yg;`>L%%HX79(`rlAtjSm>pi|3 zXk1>E$?SJhJ}!2*nJ@ja=}Ka%y-e!~YjF+PQ6v?g8;a+PXFpRG6JX><=pGxqWb1Oe z)^4~;v-~pk8(Dz*wqjK3pN2c(SA^w$6I{GwHB#l)*N`h!JJo5A#* z5jO^#>M@3X52>PSZis^sI+mnelqML3gl=EU3i~-?=mg}$$GKg6q%IE9Vwc{6){Zb)LcU^A5A>vUiK8q;Rad$>$o*C4=&X^$ZH= zUC}n7ix%&){Nt2yVqdp$GL`rC$re?VS~b7We1>B62sQGh!rt9H#9}0Cg0mTxLY2Xw z1l1_i#B+4jwS#U%*m@ zSU7dn#@we#t|HIB#Ce6VWm39jE&WY$;Q2EGFyFL~YNJbHOj1cu_U2=xF!WHf)}CMpt4Xy&jStu?XGlsZQlw)Z8;?;L zWLaZGSibw!kN>IIJvaxUlX8}{OTl0B<9a2aXuNQrEH+Xm3{B=sE0mM{+%S&ecq`k{ zW-7k8$jE3foBQAfUQa`>PYiLZt3TAAF6!*x7#uoOH@qBKwVE0;&e6HS9rKs}9b=cz z%DkN?Ynn+1%!T>B*;xXY zN&+IvWZ*)UE@S$H`I~at7Br!iAiiU%0506W=Q^T7FN&#H!~&oL1Wc9SRSC-g0eF)E zoA$^{h}?uZzl;zi3~8#+gmTIw1Au@tMKz^o!v;&t273=^kw{krC|Gh=jGFnu95FP! zkQw#)HW5kKpD9?OeSn4%HN0nl;M>F{M!DGQZPxEK#dC)9td5|YL~#eh7Ug8IQj9cI z2qu)cr)(MjqBr7GfLCrr-tW#qvE z{@=KA{ZpQ~{qF$40M=pQb&EY~`#s@z=~gpZYNt~sGco9#(hU`h%*8f!LkcIp`1yJK zhcE3Qu*c8CFuGi|woK_UtT%S7uL(K=FAJUPDB<+OG0UnmPyVB9S)La&O zrERX>6l@ky8odJ2!I`OP*NPFZamn8ddJDSZ>6B%XWZ1PlUOoy7?~4DY>KT)7S&1ar zeAsQw-u22mxyKSC;0pvG#?8mo=GavES0e>rh!ZVtb{5G&M+Xf1N||Xx{7KJOr`o(y zU4HicLIKEYx-Jl{sh$sg^>*hgwdn2V=Uk$mxRYyh?Unk#0ssr#k?O+d>LCBm@3Zr6 z?J0f#DvWTzT1xx^1G{D^3c~CR0w1}R-OW6J2{)f5I964_7VhsO>bb9O0HmNY-u#}9 zuj)a6t6vb^Kc%R`;Wb4x{jx#VO%4M)M)HQnGao)YwwZ;VhS_G& zg#XB)hm3&_+>5dzx-iSydds$RH{-p;$R@`TWSNc72C{@lW$@ z2>AA=o5{>_HeE#d;3sF3s2?Xu*xOeWXgcHVhz)e=iP$OXy#i(!md*MvLYx+g+M>$} zzC1&*5R6-8Ki96Yj5G3JS0WRAY2OE|ip~mJHyF^Ckh7hf?lHO>YpgPte438SK3t7O zu6!-k=kwzaHQ4Fw3f9~Z#Cm`@>&q{+Z;+o^cvhw|L36uw!EVCTuR z1S;lHNnki#%?K!;(f{$G4;H1;q>~$RBS56P8_+{Z&ino7+)^HpM+^mkZ2|y0TADO7 zWTYzwz7+R+&_gOyoTR8KEkPBh-`=~8UO%WMRCFP(96r99**d>rKR*ID`4b1=Qy zr-zW-F-9k7_ao2$TpaZOtJ4_ILo;!+kVNMY7+GiEOwx}3%T6e5CHG#Z`D)-skZI8< zB~h?^A&+4@mZ7${8P>~Nycid*b`e;%riikwTA+dYt{!m^&1EdgfH9(h3lZKy@kagQ zAdMKE0`>cky>nX(y|E1Ac&vHy;ftw{ZT5L)4u5Qa>8> z6*#}yYcT-SaSspHjgO+c&3~v-VZLM^4J`jN<4o)vV<5C36%$4DzHT(&{F7!uxqQ)i zk?;Ub!>i3_0GJAJeMNz=KqU=yS~cRq`>wQp+!9qA96f0a0OXj@e7YaT4_O?a`MU`j zJjXmm@*8o2oEC+a$!2a#zg03^)3+Tb=)u+ssDi^b>=*uO(FVATn9!z1%Cro`iN^KC zHF6lD$1RRE`7LFR$LTkz@9VeFjte`fDVJ19Z3FVNAFQT~U2D&uZp zcgHVVNoF%Av=x(L^{1hg7xl7QezOifST#$Z{f1Ql?EWEUk!PiB^uxd8qOv|@yz3xu z%xm?(k%rR$i45XjB7;q1`Xla$gPEbRk^X-=I%>b-4C|U|cGfQ7T`>6k?%{fgKbBp3 z_xwnWHDEzHoj3&K?@Co1_pEtv%7Nrd5f0i?xW?8BqI5}y`U9AB5Kl|mm|w?TvA5O| zdOdqK70>GYE?kmzPm({IC1W0{VU>7cbWrBT-@n>(mX`4zGl@?-NtjUW9DKp<-PpHM zK^`+neLG6uENb-Q?m1tuVkMzGgWW?YPK&!#of=E{&ycjlx==S|QnAK-Y25D~{4k5F zAQ93YPQ8trqY)V>bjpQ_A>!XOXIo+_*kWOAY` zanlx!DyihjG>Pgr3L6flpm>}K)hGRzIhC&FgdL6h+D>S6(hL}oH=9nED;poi#&1*` zgX*Ik_EBY~EAp6s)z0*U?}Fb7Tuo7PlgJenoWaW`%$`RXcRjrSwxe9}?e88&N|`lX zZ<}KT9&#L~{KMQ=IvaJ-`qwXGLhFXXo%=x`;}HCUv0uU*V8`30w#Z^0fuibZsxE?o zynkwxZ4oJ1ICWZP>qJ}JBVF~e>AYzw{M7%4=p=nh6H;c+H}5~GB+|JpS;3@efs*>e zLjh0TfGi0Sn@IjPY{G zGfDnzCP~`h=DSQ!Cp#12S2xvn(FjFM&3T?F@8?ZM?$BH{G#aa=q?e((<(0uK(+yd( zqMp!mqq5M+EA1=WX^O5|eFJQmYtRsCneS^huOggxve^a^oQqju{kpjykw=3dO=shJ zZ(7e1ec6t0Uezv+0pna*!F%n`){a}GCa4y0DPgM+J^6ouj>1rK^O^U$B7>3#V zpHN9B-0%$JmWsjO%f_kkQ;jKm{oRuMs zETLe$watvB@x;!fYe(3D9EI8f=OXNvr43?i4EHaXELTclH@LLqBC?9g@v}SVRtA>< zR)y%1ZshV~R-_e{?ChZVk0{(|qtIg*yuSq|M}=-aIIcln7lb`9y(M&EGmWkNlsUuz^z8?G}Zzci{UjJ9=gZ;L9 z-n@Z04o7MaG(a*wC1LJ65ECV4C0srfCEX1pM@bz61tv;G7*AW{+}jZD=gN+#n3B?e z2v0kb+GT%`}_F;_Lq=3kd;HH;xG-wfRG&g+&-FTqn?@5wW41y2b$9x)-$n@;xJg zJ3w0zT0Ev6g5qoRhIuZ+?>^Nm%!I%RLWS0rnnE-w$gd>1<#ka^ZR2+boKR9b^INyN z#FeL>q8O{ZeZ{Livci`wowl?lK)Ps?LDoJvHtoFU@ZFC5jj=!_e4=jh*AEXB{)R?L zm!nLLwN}@7y=^Q+=$x`cMH-<8yo?d7bC2ycnPQ6HV2x*(nmWss5BO%v4c!s<<)+D; zX!D^w@sp*MU2@qAS-?Hl}{PtP)Hg*S-Cvf!GxFA04=>& zy*f(m%a!Ep4Q$61^UMcH*!H+4UUHtoM!nVIN!D1jBf+2R>$Jk+yrn}148ll3k;pqa zWd@IvDS!P-84TLn3)xc5IIV}4BsM_?@o`hlXK^N9l{T6t_$&<@0~*)a3wGGDEn$M6 z`V<+dckLB=@0H_>aAm1U;WRpKuS=;kSHCirgIYZxYaQej$e(RG%c}7aW2DAU^Q|ij z!qqW(@t_TzaL;BYtU6in1Gp35|x7wO)1g`75p;4D}-wYADi zB-+v@25dF|$cj$qOn!G0E|AmF+Bmvw8(7ktQ;|ON8ca`J-TYS0+djrpf8ZD(#@D%Ir!BBXNjQhp^2>_{1+7x6RXhqUZNP$}hJFVo;me4~vwz-aM zVQ>ZZB-qnMxFT^^wJJ}d-+rZbKkxhl->60hc4ATlYYT)9WaEjwV z_*$Q%~zYJ)rv zr)9I)r`qGNi6T;&1h6Ls)!UGTU_s}8OAKCFehEBbMfCqCkTpVWWn{&&%YIJ)e=|L{ zj5)k@c+2GavwpHm4&SXcVV(;*9b5|!@}m2UwJ|8*0BMs%nn*qI2>_*deD2O+ryezI zIv@VO0*}7`GYvod7_jo4mX)uOyu1SbG%yotteWw!l3;5- zZaOZJAs-ETHj9Y;)y-GB_^HEl#V*i}NpHjqLF2oe8g+5-yik3*c(~=WKV`=0`J6E4;f4?z2HBH$OkaLr|Ix?NqpjL}V(>|c(v?am* z-Y^eZ$NkM<_C+FEH6V~)4JJ53*M4>^pgNP&Ebf5&=;;@gRipqqt{7?X+BY}3_G%)$ zR{)u9_uZuqy`Hw|)w+`gNST?5HHX_J=JC#}=RwprAAgpiTk~DBJXc$#ApTQt_ML@< zc=lFV>yxG!f+&hSJL7w&szEKeT9R@v1$?4&JK zKyuH4tF{Yf!H0o8c+wv=CIuG8Q;#z;v8+5#*n?PxuQ+)*M9gB@VI4y`nZ(xPYuS#ubIi~4KPN*NdyzyW-!BN zW>cJ)vg+;%FUaa2(lYk z*xKgsxTV5d-YpRyFVGQg5H9^$6#i!#h{{-Ef7vs%a()$aw7^*Iz;{p8Y$5bfprp3N z5{@c^2A21ie^Mzh2boa+HImS?b7lXbuXPlm-d(u1Q2DyHNbF=s{LDgr!(Lmw%3nMo z(NTy~C2B+^9=N~dJU-zX_;87%33EsiT{C~DG#d1z zJY8o}e=UE76o$P`J7-2baCP794FbTWp$M-P}#UXJOnvaY0uLm0akkG zDxg1UlWv!BuO5Ci)Q`~@`zs#1@WC(5?ZIQ#zWh8N_EQ*fXh@n=K_U&~A8qU>J7>KnV$v)3AKk-|^< zEalXTeV?ErNOacOYvuAVw=MV|baJ>FyW~hE2%Ifv35Do^0p4?f%e42J_mJvb-M{01 z<1OSu-#1WSf-~S*!0FS^6O- zj9Wb7i7P4M<*c^^ZvOG-xX684l&6Okdg@b{5zB-ZmqL78OuQyKOSx!K{8x7v{h#h2 z@ii+gk1ev`z=FZ(U@!t0Oacazg25v&krV;2iLDn1&Hw&|d;`AcgfS-}+O~=h8dWuE%L z$7ewzlFbvf66uFy1I%T;?*s6o9}aRl^kIFf$ly_1&0U2IMu%DPQmT-WMh{g88duNX zpRt-Y#>DaP%fAuz;wSXXi!WT_8xJ_p&Qi+XI0)oqZ8H~PHIsi?fEKsZ?|ikZ^F++# zV`e=}$wWk<->kwXND@YOIi^qh7X5CmW4je^vBYA}y1l(YjX;^@6DjzL5in^!^Fq`2 zdg^6^{Rvy`6s9b;8mqs8p3r+9^WCx|>kNA;saQCN0#NG8bL?ePLzYk(bn7AplQ5&3obeM@{dGN6gUt z|G$maVK07t)j!sA!o*ol)4h;h_ss7JtX zL3hFq0HCI;pm(^OSVlqkm59aTcN7tfdnqO-S>U{lU`8XnlbhK)tVy+oBJZjQpOHKW_@oa&%? z8Y^?W^WOeD+8~V+Aj?fS)=|vD$bd&aV@4-T@vj>>+2H0gg>0mP%|0%&$+z-kJ!NYD zsq*M0WxSA0OR!Eg+57IOu)0wZPrRWWJaMT}n|v=T!GpOf6Qtpx*7t6Lyp`1XoE^_^ z>5BNn+va{S#Xf6v3p95<6Gp|`(G6>0-7F?&uC1Bo8+T$K-Z=j%JxEwu0LIb#s=J@j zD*DG0E}0;R`aECn5p0Icix_iqMRg2BzmdMxj@6zyP1wNe?g_b&o(yfk7mxpIz-)xD zJu0hVGrUu1!z&>lG?I9c=%##28M;DEsZ?OW2LwNLJl)gq+aED1So0TIGW-L-2Mphy zHX@R61OEyDJYBm}INv^{4unn!b7!4emggp3xtOISc=(nAeD)A20Q#$`iaY`bQrx4za5*!Nz} z=5=>W)=yb_LkuA7`4(+~)lT7x0Vq1Vg2`zgqbybWipLm*o%1ROv-0s-X4lfiX!xa; zS6+QQS)4_tYaichMVpa@1C6&m>~9$Av7LW_+|M(>?Au&Dbo%)VW8FL-i!$yel*-ip zpvUnw?`Mz8RzgH-i}Ll}Wg#W@m%7nQ%;4W}yT^=F7d6x=<_)9B@`(YV(m(cUF@|8j{u{*?G>_(_L#l?8 zuhsH_r1L{tbMgHYS3KY*=mu&Vsba0e|J5C?y*S*zYGQ<60s+E;GZ zp;D=ku8WDQbea#>Y>>RSsz0|-u>Q8uIBnVHGc4z- zH}|xM5Fd~y*pKAVHRbmFXVZ%ZaE@a|OL`Q?3Gqj8Ud$sUj()q}_d7fw!CsjgTfv2r zIvd%IW?a@(5dZxcmev=~O_$A5&D!?SiWN6cTD}%6yAxEZZN2I6i0$I%wa5o$V-OuS zZ3^h=Soy8kM*Hp^Z7U4f1LbZlKLiL)Md*$;ws%q8x6PV*jWs{C*6j37Bb>iI{D@Bi ztp4o$yka~H^&~C!&5yyd%R1%ohd@u$+xm{@#*$hq9rECNuMzF*{Tlq`gh|2SZXKO^ zS`;T;lsfBQnq6!Se@Gg4N^0Q^^1p?w91HO!R_QQt&UM0H9eBaub}O5TS$y|+4-Vb! zR&R(}N~1RU^hr5YTfMzEKYT6R5IA*vY-jTS;Bynbw2Ouh3N=5 zTU!*}gs@KMm1_MOYo7T)lPT#Vx3maJB@nZ*4v{!ItSy*c3MP$Rc`J;_DBfGykGDG0 z3l!@U!*gD;DKMCFkO!Cz~qg5cvD;V@*lEyTHmTbUnQ&`i?-KMY~6aj$RfYV;}vrxPJAd%C_@E@f@88OvQA}eO5y>-uZo9_FL&=1C> z{gtHsXr;`0KGlOpK`eAN8$aSdbtlWuLTOal8{N0nw1_Dm^ZU&?H&yKsZH5b;uknPt zlGAD3n0&IL=0ooa>de>WcC6hvt?O&b4zYx}g(x8^K^;yXaCe1p5@)@BzIP_q1NYI# z+o02z0C_7(%#t#(b|}5>RKh~|gcKhu-FGsJM8cuq&&|@!HN2TLyb9l>wZ9+dY5QDg z>lWw&cTgjvrKR%b^+)3!v!44Yr^l&(Q+W@3VVYVt>MtbLsNK=O*Ezp_;J$*dpl4*Y zA({5GxwA=sc_~y4s#HxZ4{Q*6DI5^d;Qh*uceo}UbmhuY1Rg@_pAKBu*`&n- zUcUOw0PI~1s=J&kIKQ@g?60nhcvC0_2EM4EGgVprj(uv7=L#F`SQS+V-2qFHuRq= zP%GXua^HZ)XPAYPFU<8AL(y)4E7o?qyQlGw%o-4DI}}US+w<}9*0TIT$i=LuE92N8 zT~_3FFPoo=<|U%%O6T2tcA~YZGOQusp>vbBC_2Uht4iNnjs!Kk;)JGSPEnj_>Q-GN z@JQ2MJ>HC7v{T`XD{Qv_Xx_!Xv1ud!_LkWl*4fGGJ-Q^S&j^j|LUrR1G^+#k%HahJ z&%U0@$Yimp|ALHpV0Ql_LwmfO%wDCgl5IMSm1lq4f)DNBin& zhNWnBSKs$kzw~faRX<=LD*b!Ni&a|L^GCJZ`z$H1X2LNf8uk1AD~>a*KTcj-iPmaE${;pOt?`G z^&OYP@qBq^NgS4&OV#T6F$;w&AZFYDDKQwG{EHc4ovqAuTHwzaOl7!{Eo|J9HQu>G zA5y36HCVO&F?3_ukp4Oed^sa%OGYJ#^BR=kMf(umUmy&}++`S+4I8mPt|5=FFA2+Q z*YopmZUUIRomm!HH+NF_?BGpbmnF#o*Tjjxy=6`^KPc*3i)|x$>R&uo)$86Nz*q+! zx=iWUwbecN2keaH<~-s+d+g>#h}?dLvXB4vcQlwR>%S~>u2n;cEc8)TpMAL6YBaa$~U#f%!eepDUZ!LFn^BzsXxL zHtVI9c*Q?Uz^|dN4pc(XotnG{uA#0XqLFcby@$HC!DPp_nV_c%ElNfW(W#vBcJiP4 z?A6Dg%zox&w|^oeN?Ja@|39M6GANE{+rk3`8z=}6f=htl?ry;~xJz(%w;_TB4est5 z+%32hY|w$=J~#|A^SHNe)$8i&I{l-6b=U55*7^2YZMgHD-=}9D{XS$A{N;UIbKJud zd(+!%$6ol4avzYRD29-ww0zeQ9mo3A{HFKz#oN`3V5}~4QF&Zj7utT1*QxOZ3v<{K0%q15l5~+&QCZ);fjso#?j&dr&Yre<-T?S5bPrwe~xPSF6iG zg4d>LYIZYlpL;$nI)r3nnuqN;c)mYi0!2$JrI*A)_iqj0q1ub{mA>c`+p$WQuv_-t#< z&}wX8y=yc+@~py(lX@-&IrGe>$vgYCl>QtRv2Ttt|74koM(J!G@=naGJq`7FPW$uD zEn#LI{xQg}11bSF${PQlfN}Q!0*1n?fWVXbg`XH5fgna8a1aPW1OgXzFw?c%XW-C{?afC}hc-(aQ(2PcpILRWg-1Od&9_?R{o+ z1nYS|%ZHrdE3kaa=Dzf~iTsrEpjg92*yFTG zAKLisO@$G^>Z^Y+OArbA!268g9d%daa&9XsKKrc4LV0wAvjAyPQzPoCo%#2MW6oYa z<9WT7ksH(Lc@uEzMKy3^z`Mjf@_{zDu1PRcTP4M}E}$0n+2t#ppPXlX*nz zhPk7M<*5wQU1@4mI0ChOF?O`WCAUTl4d~dSQk=fH@QIsPP_!)NQ z(q#+9NzbvKM_W^YTZ&+_vP@(FJG^-uF;W=1@g3Q3%ii$@s!(XX1nMNO-?u~X`i8xP zjt~v3(Yqz2b(!OC<47#R$1X#J8#6C`PQtS*?_2GDYVQD{BDMm+&X$W z@RMWMnhv+*2Mt8khh&MzfUR-HAzh?Gyj0%NAuBtffsdCRADTM6+k3|i7$99#&~;-K zk=JO=SYtXF@3fuJ;N5GBU_)B|1)0pd0+(=K%+B{|6bw(+O~QFw&P_?ZkEb>^vrHC7 zr%|RnIN7L-2fNxHG1E-=CKCwRF6NoBkxuaKikZtG@#P(rY)HBNs+!@EbYKDL#a&7U}e9{f4fVvnh1ib!sFTk>ch)mTU~YA)CGUYoHwt&)0E zv40|Jkh-toQ<7s)_`9x+DN)Im8QcKqqUsGwMxBHAz0I$gk`okhL-3n?M?-&C=xM+g zptu$ggYN*Wnm;)$p+kD#DH^8}`Nk?>s?L^&xu=N{5NVo|=_}uB&X;^#i+&}r*OHvP za@9D(+;9aKUHl8wLP!G`O8tNSmHUV%H&>q8*QEQAy&E3wQ0(CwW1`W*lqW;V1sUDA9M zrI7)B13w=vE-NnJ0sB*W79p2f(7XBei2JoD!k<)lYmTBf=ds_S$KMyFL608yvV)A2 zU-EZUh+L!%+4Zh{wyMaYW7|An?JjuOK)L{CT`IJsD8&=klc8!ISceJ~@M9<~?a7MQ zqAQ1JZCBWI#}^~>D~0X~JQ2L|dqc#($|ZXV8_F}$qTrGDYFy5`l{j|)UJA>+D{Nq-{Y|#PNpU2i*?3{Jf_MM2|CGvGM!1u5Fs?#*o_PEE)TUz1d&jc6d+E!a_jsXbx@aXy0*bpREfz; zHDIFK=Wj96{~Y%nmX1q5UVfbUYUX*t+2==avPfp1wLMFh1uW7^a7$_o7IcgAwT@2@ zX8>v>KE!n!>duq-AuQsL-?V<%R0=a`8Dv4*LIo@<0K`d39>ByLf6S0WGBiGf5VdI8 zo5}3@su|>Jo93b$8Z(dq0MB-*kgE1Jp2KotSxe}#rj{A!;k{yip&zbb z^uQC{$pCQb6vH{P@^u?G>A7#WsSo&uSsj3(u=7nXCNLTL(^G<4}yF9$puOX6^s~Z z!%7Rz6f*R%N%5Za_3p}Jr(Q@pTJf{~r*AEk0cnIIXdhiF9z{`7HX}oH3r!%8F4lHC zNj&rJh_9EnzW7h*m|FO+N%NifDy60!B_es+7Ni+VegeXoFOBKVKuzTluu;a1)z;@H z7i|k0IuAC#iBrEWanE|3haCAQtS^DRe1Y>i)^8y*>!c*P3Lv9ClchTS4%>*kEi3~# zq+R%aUl9&($M1i8v!mzr>c9u;wp1TEX)K_B`Pf-^0shuZy(jTOhbPskV@uIieL;#) zVYJUMv!b!)7HSL-A9>eIk0UA|#af#@jkA|5uAXSjYF_oOhlKC}>_>PVEm_J0S`@lH zb*3A7P^4{f>^XSnO`nYd=!@4^2e3d>o$4L+1-IS_qDkJd8lo7gj2V{oJ9PG@~(j{e!=340Ioa^K4Io#|6k)K5Nos2#m{*7|1K?W z_fNVO>o!MFet%*5x2F30BZa+eM~=c@vNb^r7M`xf@9obk0ZAEuzHC`+aR9ywzonmj-2?;2jM`GrK`Ywn9m@Vkh5HRy?>y%wDiNx-YIHuTRA$9lOp= zLbQOUEm#!f@5ps@35=reuhe9^R)XLop5v8y1*eh5EQp-T{Tb)_=Swd_=g*sg!>0Kv zXW|wwfeY1(JOdW>ut^-<2{O>0(fG%*T-Zxd1mQp;bBT`pRtVU$?@QIdR2>Z(CgnCE znZbn(zv4({)R#e1@2x@~docNdM2iUf@GsPp5n!DAP4Y7$baMVloyhm+hAkOj3E6Pr z;kZ$T`54r}u_x{nxemrwR59FQ>(m(T766Gqyt+4~Ji1mhTuaf+CqP$XxbGyqxHxF3 zLGC|s@X!FExShd`NI^B%k&6hqrb7Zb$_wNzeB>=-mXzv$To2QDfZu>6EYg!8AsoE& zq!SM@SHNE44^;r5k4|*-g0)k|>%}5YqE=Y)1U&s?(1B*zMmK_3V=vKE*R-;YP3TH5 zQ0~ju@dUQho=+R$1ykDeU@G0v(ZpdW0^j7qSz;*&D~>s6aSfMP-}84F98C}jfH51g zvitFe#d4|BPBd3n(g%3-Q|%3=vX>YjeP~|h@mAEq5qx&PGClA3t6F?UEut7F?n{{= z(jHXmW8ZVB$EChwgj5Qi2q*5;{*bMyXgk0Po#^-BYuNi?FMv4$Y<@c*kp7mP@2p2@ zkrDf(Ilioor{l-bBy=#i@oM)jbIw@5uED!6wmi`(78P-sm-?#;LFq4 zl<3p8cd1^qLXJ{M)XA<~CDPe`h_s;O2-(?=6VxeDF4!SZFp>O$`>rrBHKgRZ&UC_* ze7cVI9a>}YKKmq-P>&<24n^Dd&=rN9lJ9#|oy2qR#XjnXJBTQJq5J&2NwbnSU}1V6 zA~UyEQDem9LQV06XV}FC7!~T2ZO&K>IakP9HU83ip3+kP6=*d7Qu_I&To~Rb!Qr9T z!@=+gLpbD-WnUjE;u+MP2|Aqhr<50cJegJV*dw@K`zo#OFr{0>VAz3s?QS=8RMo3U zI{VdqO9po}Bl7WfI!`L?Z9COFq5CXfD6H4@d+wR{VOLy;`p4QAFy>ys*O?GmSA_3* z*l53I>605l+HL0_vBkPXN!sU&ny9cxAF*3NeEviw{etd*mnuqEQNs}1rm)(0Lr#<>Au~SOe z&aih9=`@RXQgQVMf!~)GJj@^O+VyV6Ik${8FF>K{-Ni=Bud{@qE!RT}@h0h60;au4 z5Wg3<9<(6zx`3BQ(hC4EwmlixythN5F+cXFBTqs>#u9vA-XE4Wvc`>~-w7xb>Voj= zmUXlT0`mF!NR+u!Ustq1b{2n;lw=w}f4FL1y)5gvrMD`yuS@YfeD)q5aZ2V4COek)UHX z0QP*&iI}Z2-D%|Yl^V~eaGjy!mk57+-)XfI9FdV=;bEcGi4c`G-+4dNGMGaZSr9r1}=$?4F*wi8I-}oYnUv!hxz{LB&Vh> z!?<2p3+`A?tqP^;rYf|~+kujxBH9u_i+66`;zilF0l8I?#;o zX#@#7(lF#1q&!xUw5ARbBO@XS>A#8upbzs^M|wRvpvK;>5+gvwIFghIf#60U zXb}i}1cKzhM8)g)m8c6;s8~uCjJJn}(GB+i_1%v=_V){xpv6=%pey^?O&Sn-NZGE9$uibG4hmyV>45h3vsUW^Oe_Sa{^#)N(3D<>MZ-nj@ zR|&VLe199x>^O;#O`?P8?C_)k<$PEpM^S3dj%4w>*Q*UiL#z9UT92t;n!l8$_zmQ| z?^1{&BE3BAWw8c+4mW?1Zb<#P5AORZgqIUfmR{jSx8i6A^E5rSH>^8@3BxZrA>W~j@#gb5jx%4Vu6*iLp_g#j%tMJ|MS|D?A{rai3$C@;g!)cA z-5hM%RyS`_(t-qS=gN_m9Hz&vgI%l!5u#5irf-GHWNMp(Z0-YLcJj3=zl1r=DrXeB zG6-+0GA|~9T=a#RVg~Svn^!0O*@3ed-UFW8%L}jyV(Ik-I5JHM!DPyo zq4(s;II+5A-ud|E(n!W(cd%QeKr0~J*GjNABFE<7Y9ILEKRoF~3g!It?Q{G+uc||BZg22OX;e34^!cG8kcFAu@q>O-vjgXm;G)ITYlsACB5Tfv1r`GF# z+T&Ef=k9fiwufMyRu{jGSyf6hO2ljoN#^erY=$7aGnkj?@ksLbNk`l zjOzyiFY^XRgp&XKze@VaO)#@Yrox#9pHY}}hyMV_((qG^{ zMpu`2C<7b6nqC`N&LFyZA|pND-do@@R{!+3e-Kd>CbX9+mzCHNlq zhw~Q@r)Kuogy+&o`)9nA-7ZSV(7A4uc-g{ppx){7b==X%aV{a~cR|6Z>F>B=SCpZZ z*OQ`py4YsOUS#itKmj~hH!nW&vR=I0K>JoTzx9?paJ*PY-BKnS2kgKQB@KWB&RQzD{AMqTOzBkpQwBXi+zYSDPh9~VWFh88J z1Jgz5<73(m8_cSoFzd1c%jeoODp)g^8h0tApF*-u1pP7cO2<0jIYOnR^LwgaP$Em% zLslwQ$^~oh!VG$&!;Vt?{l#RSdeQt zc?#{7*i34MlkSxuQJujj-1D53-c;7_sOCsL%WnqP>;!fcKM;t;s;NB7_<8gs%e9KZ za`ciluoE!fcOk}9SRc%NJ|aCt=9ZnScO`X;2f4V02B24lHhQvB50M^)e&g9{1F({# z0+5djk@&p5^-^A2!C!T(twY(o7v>N?J@(pL8+OvJI^Qh{n?>BN8)t&p3C0S0u%*26 zO9M)DF{~&yc-2c^EYGO_!w2V;Clh0s+)}`ksBE?-umkB=XSRm7q3DYNF5U=lpY|kt z^YZFD18&uwP2LQlA{mXK1->}%g1Kn#%2F6Jbva9|aF@aTNX(y?rz8a*O$}bugsm9r z2ve?0i1d^8pLJ+o2OyMxn(-Cf~F5(b#C=7aj6{SS#jL8V4i-d zm{ox{hU(W9EstkTYcFH{dWDPN1fvmDjpJ^BMynHXdS#Of{NyDKf|><&(irWFA*SMDcE@wX#wv5yM*>V6eUk<%{tl)6 zzPbuPST+-h`V(6V=SHl>Y2NAgR3Wb8i{k3*cZ?MgkiLziSW=?1;{@7}5ZMtXopT3s;w`3_3}PH?TfyKp9! zHTogPS+|R1pzv8Le@HzJ_4&`%GE&natDatB;3Y5Tuvf5JTdXX~C=piZgTn^tMQ?U* z3tAs3V5;0?GK1Ju5_cw-3GYrTWM*%l{g3+~@hh<9RhA36ulR^rfuF0o6fOERuzXE$ zr=xjIgy7ic3Ho|=O=GqrRFqU&+`^fj)ykj;oNx^I`0{H~fSMzgT5&mpLDTb{**A&) z>-rUf6&NHfad=L`_*h;mGu-W^5I9~y+5-1DGn(IoV}*WI?Gfu57e{q+ZMuRqQ)F#_ zc9hR~wHTIw6FyA=zgotDt3xuLu>+^Yapr&_=LB1T(sDqA&l+QM240wL@BYy-xZLNXLd$c0Ge# zx46n{PBvC2laSDq+(h`WSPvq{2s|4oV~LOikW?DI(YbCmedqSKYgX8^QA9$`L)biX zlR$B#;>PLj*GXjlm!Y4&2PI*-wQlwI3d`}m=troP)3-JndsUTjBlAI(>$;XTsG-5i z*%MzUfxoytWp{rHn>&#k1Ei6j=1~8n2H0imfHUjJZZEV zS9gObu(3p~sv|yza>`r;4*E|7x}ONFu;yJoHmDzU zqf^ow+@8`|{B#9AeJu^clyZD8ku_Pz(=YTZQMqR?&JjWF`plOjKO>ZP3Huqp$JN~2 zdP*D>e~4kBCJ~6vp}*dgw|F8>BWs4hT4g>@iT-){N@5Vv5O^Uncf>p4^tQbZ0jx@w zu4fsGAc>jDX^{C^alPr5)WP<@kQD^9M(p7h9xqQ#!h(r526ML){a7@4)5XswtT4;y zN2GBJB5m`$mGG(lN`K*7sEcYulks+?pzATu3XYUoO?1!NC~>`ehj-^Ds*)BK=xry; zX?eA5+r4bW6m^rA-~fU)iiV)yRMmr@*>mT<4Z>ZWz3Jn)_VVnXZ#F(RdgeYfx4j1t z!S$_foH4k18QPz)I}{n!;ac&k%2$c{O@iX8dyrS3JKIUYBcB-A?;64!}t zc!0K@UWT@-5h?)4wy3hGf3?UyIauOG(hqb;`jD-4z+H(Nn~9rmdx2>vJ5|fGDkxfp+4LQuWB_P?2$=%?8VTRztVo?LmK< z_3WLZc~!%$!+IzwdiPr6UYADC`9jtEVfKI~N&*ws;?eS}J4EX<_a@lW-zoy~&!kzR z66yN@1A0OYSj;w;w$f%ozSWp_PGY}qrsGq@Jr5`W;^bRZ@?di8I@GaYofPfN*Q zAEq9(e5P}q53EfxLYnR;K^!@HLMz-#e9r!lVg4rEF&qz$AE>%RVa>cE$lJdn%u=&T z_ObR2{&b*?%q!;5t}q^~*2J|oJ^P(*7}31YrrVCm>{J-CZtoqXww~guswc>>zo2(C zBi^w=Yl1J~*$oBt!aZqdN*{^!`q8Og(az#+*M;a7(xm*D{mZESx+tB~6sc;e1M}@- zMf%a-bonm6u2s43pC6u=0LAGGcNn|mRH2?uZ}WHnhjC#H7ZyOG&SWUk>xMfZA1Mvm zQC1-k>fkdunD7Pw_<@hVom1Wc)$6AzlnQ>S<2h8T-7j>dZ3XLBniXHQ2^mm)WV6>K zi-+@%&Ft#wT6+`Eqq8{gCh`l-!RshlY4%$4tOJzp{ormqftUudozX0fHV>`1Mm z`JfuHtTY7CtQ;IJYaXiwS^dzS>N%u7pqxVkm1}U$xP1Hkt2sWSU%N2X#1v-ov*GsFN|9#ipT~8%jOLpcU`~{+n}tvZL=Yg z1G7LvWNQ?PmeaUhQ>|3IC<^(M-}i{9Ur!-Dg_SrBR`g z?Vg={;FS!hiXU_AvV+KtvR=>E*V|hbXIBWuS1Q}gOX*})U-S5V@Y&M>&V!vHwOata z-F)lm$;ty_TheNfDwY-Bw<%;UIcE%byZ05m(GE+yEE18I%UC~`YK~}l6p?jGM%$GO zx#*gM<*3dxz08=G4*7vZ??#Mqj61LrsKL@mAu9`~uA+&s{I}UuZ9#Gm{4_sbKB{CI zRjEk{;7gj!JX_^EKdivZ^g^8~PmLO=qESF8762pE3v;xYxZG=Kjt9Uk9Z-%k1Sn$; zy-3bnbp?@5XbgOK%~fM@HidADX0fO~xiF+^?N3k;d3A$z<=r;x9HMttQ;d_|OHe%A z(F$VvS9VW6d86SV-RbBVM;|UlW!dN?iLd(BJgUwzUU%lWDmBx}}11t1(s(BAX)R0QK-H*bO;dFZF53j!l(S&r~%iZ=)mE1@0}1cX6rl4%X;_^ zkGr8k`#l}M7w6bK-92xkor=U;bysN5eL(WaozI%6@ccX7y*9&;b+KTaOkDRkho5HQ zz~seT3Fh1Yh3nE6&+oiG5`7l}Pf8K*0hx}bNL@A|h-c@iYG;b>ZyUd>gCqw0zUlXZ zPH){uu9x;HxxtexUVi6y_oHBYj&h5oGc#NcKMoIOBO6%U^a`?d?P{grT|a5^t1tGG z#3#-J?CaGT*Za7V4IZcgxwl#|nqTmXUCX9O zJql18Kp4991|G|c5w_DQe*eQR*#2MScvTtz_9BgB#ILl)D`)WvT)e^;uh-Y{`~RG9 zl~Z$LK^@U=?rIz=%;fvBhTVNcrhrp6$qvM6e zcETEgud-v_+F?p?FQMuu$KLYPq!2GPy;a*%X)SUd^i=<=xY;Pv+}rai?pf_9_|PXN z#n!Ta@l!U{1Zs zsUFlxrG_`{^rl5cts{uv7mTh>% z)RzNb2{Tb#e#JfeEI``{(%QzCpHro0Jy$FjotFJ&C$GTN?YXb{jO%Ill#Mpz6?>ib z={sq9eYXZ=2rs|-`ge%1z3pgEVjD;<7Ap~4$u%5iWUs~Ja_pG7O42vJAh*6sT?Qtq#_x{$YGKb_ zvCo(X<*0vKhdtlkA zpV{pj&@WLkO%dE!j@BR<`YYHE#-|vD`7G2Bss4*f!bv7n zj(_s0q7$dPOCzRrr&3eqMc|9DN0-lkVDD~bP)+@!>%9aD4p!AeChAlYI-Gy1)3^Sp zj8Q`u85bUvfVDH3-B%w7nk5N1HeYE2MX#i0$sX#}fZ2qrDRr3N_vTtvQv1!-oIWGq6odmx zs`ir1!|!Ov82-pmbM*b{;@Z6|rdwbg_q9>ru=v7t*2)z7&x{!_KdK+uiehK6qTO@^ zV^#(=65yf;-o+4Fej_+sNk?feG2P%Oh{{R3UWN@U1X1+7CnleDqY3o~ppy12oZZ8b z_fh*|Q|Jm_ry0)`l-{uiezRy^2NqhENFy@@Zlpxa_5rvdsmoG^6&pL_Z6md{d*e@^ zjtLA^P*l#PURH%Y$T$$06z#N1;mUH)z_obNr_xqQI>x-PGD>ffY78xF->IO~Ut1Eo zo7lB1%_RAf%*at(a$l}J^y=ctczZoxy1D=Q=1kh(S-SUp?hVuU%}x{?&6b?a|D^b4+7fpducBv|tjNoz(Mtl8k0T&lFDks-t$x<_&-$daV!ID< za_C>btw`=c_}iE}OGaYNnn=Nej^qsHY0vz^-9{Z&&@cLczp9GLjgJ9`DRmpY5o5BI zbB?;vYP->51}}2FUM!UN^R}xpq)$nlb&UwU%jYr>H|^fkpJ)SV(Zjg3XCnq<=7^tC z(X?1W==ev?SvXTk^~6HKrQ~keCM=-oD5=q*?x?%;_7vgf6_9Un*J_&W$TYpz9~5+0 zCXv^42CJ@bO05KUz1>*0_&pYSLnVP@zM*nSLdrRh(B;6QO0-zRqjmIhF>KZ^jk+8(Iy5Lo?B+-bo1BqW%bItnDp}mp`~R{~j$OAPG&Q za>3jp1TPa|ZiVap)-r8oI+G`v%orSrUl8`Uhe_`6~?X0#(31hrMx z1)dBRBbqaX+?J$_6{x?mw%C|{zMm4!QCN8qnkU`#ANWN^~jEJB%wo8E?FeN)`au8e%@vZ-?cDS9RBnK z+F{G2an&71&+}vY3Kyc0MkFfTUo9i@`K5IvFb*3kTNxYGyZLs|3}SN~#Bk)<`qM`) zuS?6^+(6vRAZ^L@{F8iy3-9BIFHAk1sb#oBR7I|(y7T#9(yI;|$A`l?_ZapVbl=0S z3r>UAQ_fb!K!UDmykme@VI3vlE7DxW(larZM_Ic`Q53SCIqTq_J2yV1LoO#22&jrs+al)=RJVlGGd9ZVaJT+KP-B1IM_1B>dG*a`&yEBl<}L(wYbm z;Fr?gIJ*hkmEQ*f7XrsZj7$zB6lEec-$-^vb0KA#qnZ<-r+n}R{5#wK z7e*i(GtvVU*Eb)MSEmU=rJ{FM$bwhZ%9wfdZNgMr~CMEPyEjM!!fMCxSuDL&% zTcj=uJQR&crgse%CmgSHr1VOSnt!{F5hLFJg#FX-Su=p0%9dp&s*(M(L0ePd$wiJQ z8l~ED`xl06vvRHw2j9~4{VyE|;5`18A^-hqbBTKPqcD3gJ+;ofV<5gB`!XxaK*K=~ zm3Z_Tkd_fFLCO5>&t|9JLHwyUN?+#ZNy>*m&^>9Gg+~tXt~!4b*DKTIit$=X{ufdNp~c9_@U(p2^R_rud;y88UZ74#+M@sX4d~8&N#6CK zOC=vC_pTlC*=?n^9IHxuBW5E z974ny6h+UofKWMKD*g0@C+m{;yi0o$K=yINU~8zK*$7EjZ}3?!L10rk@IKEN_rqVA z?7;#immkkh1LrIA^VJSH2Zon7>6oz=r0i{PT-jY#s53@azdJr~EDaW}WVIcfg8SE# zXxck7a?`h(<3A)lk3LyJHuMCbwpu%)_629g|O0Ba*m|w>yS|rlV+C3p&vcOR1e`MiEZ*MqH{w{hSpwZ+lg=6`3 zgpnBcR_jxbpy+=Zu!G_O1Oac$u@k6UvO0!W0mejWLn^QT3=)evX>M2YLTauEkH4_4 zKfE)s8(F5_txEKr-31WWx@b(Z%iX8$W7k>#X74*T@d-BD`SF@_mdNI)t!Plx zHZfYhu~nRT zF}d5!mNfk8=1qbw6LB@pnRZ!@b{G#1i~i2fz@40nD6591qMuJ#f213U+VAcV8W`GY zBa)B4uER3Z%-C-X>NNe-85h^*4rO}8%Pwu`cdLFYljPWj6m;qjU+lhg{(Kn7z$5F+ z*!j~@_skqm3V#s`g0%01``gYVP&+{IM-$&hQ*>+jiTNb_jCif)8U*awj>;x(OU$te zoyL;l&;CgM+d;1g(<3W*%We{GT`hN%p6<-~6o}LH?{;04Foo^P3pdpaGQ2YlB9;0g z<0Vg<$6oS9fGuOR4D0S>eZb`C1BH#I<>-^jd85w!y-3Q;twPN+bA#N>ogd6O=a95- zSJU(MNZMB`hJdM#XD#x?q+1?Us0ltt@1H`$b188J0RX$-h6OkPm*a}EaeWsR=|lkF z0@$I%YHox4i7xj|N8}e)e(m>Ajjb-*T+benCt{|l%QHQ>7Z-FM%1A7bSm62X2xJF$ zTt(>>{;H@wLc*=%9w~GLV9SUZv()k)2l46zSu&P?x<9rK52+VFn2YcYZ&|^o?!!-JbN%aG`ux7Nm) z5(O~%qNA2v;vvhr5-nt1f_ z!7d)xnmOWo>X#env1UInW;(UBeFSm7 z_<@|?M!9wiczeLC_^NIK@YJ24w6qkJih}-5!$qAYY(X~>Jfb724vFx?wvNs`d*+kB zQVkAObj{E5J_$3FD4|rk9BlhmjwaWwTz~O7iws|)dld|ny5BU7tjPIEme2aHV*#XH zR-1{`pjcq~t+nPWD^~x+84LjM*7l;{w4F@vsG z`>2(VzQEj6i=fY8^VXW*`ura zGE+ivB~O$pKG^k|L}D}tsgAe-KP>|n>D%m$+t6$`hOGV|XAXxfi4Je_QyMDziu~;x zoW(pM;GR~iq{KZ(wSe0*+l?TE9j@uB0V~&WFMVeeC-J5a@r|yIwX!=S$ScJ+rI1r= z#flN|KQ2S{|0N6M*H=ZBgi=O`xI+|Kb?0iUj}xM}(}X+&Ig;xsH}vKDc5U zLPVxamhq3>n3iq1VIcojnzpqVAZx^RMw)fswbP#to!|nHL+_1I`fwz@QTleDv9Bgia=)MC41cgbx zp{PBxE!|xFyIu(hvU3dDY=iyl&lmS+(_I}t4;*kHb(pU|$Z^yO4DkkSW?cjeolTn# z9D;q@IgNx<>lpfrgRFe6!NET56FI#(+!^BntXC7*3eAJ6ezVB0R_R^pZ83a1q5^4owU5Td0$V1Q6M>#^fc(9H@Pdi4ZSqc ztLe4k+#=N}i7H*YtO$|K_m|2p8qo+Ys`txoTtJG*?D^@zg)zc(X!SM}PNpYT(;v?# zfz0{w*MX!@7t%H|AUj14NR8m}KBX`(#D@Tk?~yqHvw#lcp-GijjMLo;&x5=4Gs*J7 z+1X^EH1YTd-4oJ=eGab-1^zYRMthuIhCMgF!UM}?_r2{!phor@v5)Psj~ut0%ujYt z@*8DR*?uRuZcITw`L9LxZdiuXQsR?1+)HN4kk#Yb@)MVnqv78{3Q<%adf2!9mmDX; zUK80r83_x8tNTPXLxMiF*0CprA8W_v@=lY?nu$7Gff6%K+TbB|aCb>RQt<$daKH-9 zd0DR}8MBk&##1MIu=)h&Hvv)Ws-bk))Phf|GG3SDG)Z zx%WK#7-8x7Sk3F?eTT~wp0G?F2*(ui;^d(5&_(C`vdzEha) zN7%P7Tj%=Qy6W0d=s!lrfOEv>-Sl#>{J-;!+_P*vD_v*W)chjWuhEjdZylc4z+VYu zG7So}NO}9Tb2Rc4Ehb^#n`P*Xp*#E7X*=`tfq{+1C;rbdB2k8MGuYg%90ZQ<{G+R8 z*%Uf#W{xb`{xF*9sl>bKIwWWCWS3LcL}Lu7pMiqw?9}d4B@{I zNm*XB0JaV6&~yJ~Jo%0i-q)X&m8*gD8Zu>~H-4hB_-DeJEc~tD=)BR9lN(@I=AWGx zr3Nw7$+_YDz@d+~5(toWqI`PMhwo!+9r!nsLw+E$|2qkGBlbZ$@FM9ozbN(XzCiNv z^JZFvx5~|N!~|1kn#QAl!8({ZLS9GP81ogH*-BZHa5+Y*kYt|l6GJ%fh|Tj zx7>8&v(F`uSs;@UqC326|8C)K+o9h3?+8A9#0|7^VqPmiyUg+MA}%NPPHc{r`YLgD zD*mKl7voDQ$ZB#uS~QC8(VS@d*HcP>h+|s*9bfx+31UtqpCpN z4rGYrm=KmOgiJO-5K^bpy63mqK2fP)TOZ6v<~uUw%mP*F`|@y5C2gCz!a(m`BWm-+EcB-W{(JaF{h=wuM1x4 zolg>_H{cxetVTcyb3B~p+GU#yzzlTzkBNy)NxP3ccY_B;zUPekJR-FNSJx63%}t&@ zrMu%F(d|K@?D{KUQM<}~4?C}GF1o^ zr&0+A*7?iI@#?Heuu=|so%{LTbwO0<%n8N$b+&G2EfXu7)7dun4jnoKWM+)63;3@e z4CUle1tE#Wtj@i-r2FlG)iC8-a9M*TDF+TY!bC)TQ7+1PL>E2L=b2+17nrzyu+si5 zQhEW_*tq4+h2y%oqKoS?@pXwSffK>7? zz$R~%PbZ88?{$(9k=61pP5(X9Ra|bMaoo22xHxG)y{p1aR)sdE(b5f9t~}0DV=BwW zZ&SQwf%St3gf5cgfyHxmVU>cs)(5z7KOn26?GD@ifOaOtFqj=sFt95c-tO7a(Yz9W z%Pr;uNKoLWa@Ctop4jWm-b(rq+R|Ejnx<{HT06n=MNR8`jrnS=?{ky?ry=QVNElyU zjAUahzh@FJ(zBHVQGtE_uTwjrM{(O4=!D{no)t5okBZ^_@MAn>A?W$`^khjF4|CDA zhlq}VgiYke?CXhvK_Ji1XT$-)`kd5ntV%+OUK1aNHr>6-xoaU_?(K`lcm!#S5Borf zCBSBVCAQ>#p=LS4>}Lj6$iJ_5igF*WuwK)fpB8-rtZsVcz&RV4B<=FxNrLG$ ze2PHbrrjSFU7vE3rLtnZD(hpBKL(%X3*?EAc%Upe7@67TT?e2d)i<`D`pTn8L=6KN zULleoEi;EnnTX8l#*-lPdN~7ZbN%t~ zl;!+R4mfVn*NYOz%s+2MT|xq&gz;{JK18ro*d_>BB-#(IO{WaY&_0mmc$7!7vaI2K zdu_^b9t3TYQ9u6RW3^kK5zQZJU;f!jMkNQZuA_zuFABzM z)d83*ivP1pOzshEAm`75Gl)tCevrIj)b{2>;jP~%&Xdmjkt@jEib`O@AkLkRp!TpHsGU^=ClSfj41W+))?Cd!Zbee9@v^VEk zNjV*wrF7$JfpP$}ll9z(kE-CGsg1vYsyYojXbF0ND?bFEPfn7^0CpvlZw zT-At5POi%&zvrAcmw9vb292%{O0KbvFVfK&z0!MG<}o>fVOhxG`1ok&y)>HS=+wh$CtIRbMpy(rtAv3XH=Y zNcX*~f&}LS&Db0{^E|6ITlBuC$Y_g8!nPr~qBHo?l?Bh<>V;#4@^D3!Y1f$>84`7< z-Uw9S8QOLJrvr|tT6dJf6_MvR)J^9NQ<@0bwYf30I;l@^_*eMFiUAT9CBv>7H_M>g%`Q&G;1~D$uy05}yBpPeIjk<` zpC(Vb_{+COfB;l;Ha#>SWXctI?E**oi6&wbsF&x!}; zWB~#pMPp%%WHCS#jy~%Q;^g5w#wWf8?MeQeAAr@jb3eyPkcI6E7h*b&M1LQ>s|V;@ zjnvTa&WufF;X(W@Fw;@rX&=v*@&8l*l>8vKVDo1E=0(sU5?#lf#^>?9g`F9>ZGuOv z7{=F*7suR_hTNen!3YT}=Y6^t#|Bwu!FG3Fz?yts3o_8~GFGj&BU$h)#RM_}?~gX< zi#6nNzTQjY(0MSw+=~um_yl~LaH?$86sGY+D~0PHjGQ*+V1GYd=ke5BIpqR)0pJz% zWW7;eLrI>Rgz9>pmb@4y{3|gJa)L(-*sUsf%inE{FEadVA^W+0}fF?y>Uys+G?Jo$m++aUiM&U*~<`mNE#mhuH3^VD6Kics*I~y=n6;m!d~eqFoaV z(i~N_hbf>BfwG_F=tOB3l3D86>5Ao`CC{~+%t*HdJf{EVxjquyJWU!Z^ht?tl+Mn% zDTiGGd|$-Zo1xfM@$$GA!&FEcOYsl(1Bx>v^uLC3k|5O5C#N{$b0aR;o;5YGxZKvTOoaWc)RyrfP=Nb8SI3!{%f;;0(5Q&>7KzEU7A7+?OU^d5FD*U+}*vPSdOKF z7SXp9y3@e}%4I^X6ZZ_U%9{BNwPPpCIZv3uK#kBls>#Z#%~@CS9GE$GW1xC3#sJ}f z+0yFPeq*?rxdr^Kh-gGaTybo4ToFEi5x+J|i`P2KkYi6r>TeRiWNrsIxQU)<4{ zzUA`_g8p6Zm!5m4AKb;E`jOK5EgKCl#d_pP(AxJ&GKWuS;88G4)0VuC%t4I6+CVRYAtHVe>+_ll zZwN5~f8OCmp+gGqIQT%WjlJLp0i)Ur7jfS9P1=0kz$3m~`9MCuCb5^Bl8T14BSOsY zNwSHgiBUF@pUWO@ZN1Q|eim)PaH}x!K6p-tUwa{e7=en> zarFnH6@hqu*%(3DIB^cq#dVv74t7F7^~_!6g4h!Mm*&U0L3N~qe9rzm=dz5?U$9x+ zC;vOmVgElgg4n$R0V+{ni4ek!|3p*}WaR&bIuJfk0yq@zwbk4iJ!*ba%x+QW@(Y7g zTGr&-Va`(z>Btyrs@~b>$>G?hy2~$<%g}g6uL-pAr~KG$`wdu?mQ2mn`M1&zjdc!^ zdI++Chw%fv$F1d{L!6@{66CrfB6KcyI8mha<<)b^;evzb-^v#hDTXVi!$feBty=SB zx+wql;0~XK_hWJLQTgCIWuB?qS8_#R>*67(zb8E89E0l{{!9NHy zT?|?$k^6b4azS8o`~Awv_ThtGn9V$C>Exqn{T|2htDc^4hD<<*$)4CB3-*uq!ae$} z;)#`+)}ram6yzo*f*}NV0uOOE;X*7YOVvF^i7&j3Vvgz$SwGl4xygted|X=u^<5f9 z5(D>P3&6&02k0AU>Yfe*zy?wMRI``MVAzBR1UVELBg}UAHI>zNYkw{=7~Qpp(jfy6 zXXhE7lg-GxRtCXVA$t4AZT0c5gW2Tw!$P!l){W(!HPH9IyFPy<`y~3kiL=}PlfcJv z!uA4_+4t`8Ux^=6l-)fhM1zV^Fp;pfTKfFBtd$eh?2n~Ph~&S_zzR{xJ@9n?s6V>3B~v=w zO?$QP+0|3no?P4SH;+GgH;gGWyFoR@LH8YCE27EA2SnlSg3?OWf{=tK3=->G9aTTz z#WDbW-J@LDxUPm0lu2kF$)HH}vkc235M!(#d-z`E`7mPhnVxZ1{B0P1K|{=sx15&_ zI;GnSDH!G#$FdqvH?HHo;uoS(DMlB$ziGE0;K-7K!q#hbo*N3Mwf^^;5e+3IVv8nv z-!(19Gpb^TT)PggJFz_vsBi5~R=|oa=M9{e0hTq2gsdGY!A=ixjI>khKI0MPw@%`u z1Re)PlX;7a1PfU6Is2L$Srz+OC|}z;TDp1tHF>s-V|R8W$NrjxoYWX<8>0Zf%u!%V zygQ3U=(+sZ;}@xNbh(ZM+FTr#GiMh*CuBQ$HBuIYgc1g7SxfuqVxi8+7xOZ08(E0& zi>~qY)<*lNM5EEC+6YwAE`V8}^W{$X?E74NxEum1k2$lpU_f29`hK_eVS2BA$KlX) zDXL3sB_WAlvhDfJW}D!``bc{|9WY-?jviv2g5CHJu5R6a|8iluSx1G7z`(XQSL~O5 zor3cI#67@(tO&ek+FnqteH7_kN=9ZRyY0F|^L%ypzJ#X~`AW{|XD^Gh-fQ^j98a~E zx`xO&aZmTfY0iAd1qY(o+bC%fGnN_PQuW9mml5Cp8Z;SxoX)&H>1t%ZQ{;6X)LY>; z2-%@YLLxP!sQ$29E>Tg6U9;L|F2?W{bns=vTdTXZl!>9er0zYsEU&LuBwyJ>f7BR} z`!$!a3D>RHy(2H!rJobh<<3K61BB_d7&aL>=8I#rJIs2|eFof+k1(kI{w5 zG#Gs1?-G60gQ5;o)VD#o0ZR@8QG!oL>Cb^}ad$KpgHURrLA@iv@wLO>gABMTg39f2u&FDsQJBqJkbgT?*XOji`_v|uMky>Mgy8-mAQm<(Dxy|3FMUX}z7|0NoN#Y{|$SOTYueXmyH zR4i2XXTlpbqvzr4PyRvG)E(Vd520hWLQS zV7%%&Ew`*bCsm%#vEPc1=*Pw5wpZ;=XAgGNnDUjJODVIh(&2=5m6fDK+UUlYIMzuwqJ>y?^0Z6yIyszuSO`Za>XIA6vVxUVw# z2Dg1fLu$PH#SiYWqp?(fwyd3QWFIr0j> zNDt*}x0hxb*)l4G%WbHcUT#DeiXKY0d5rF5zKomPL-I!ZEuP?Gf`e(~dh4hO*Ds?g zqJ4U=C{*O}D{%qj$%JDUA!~g*uiEciZ+;wHh?Ii0lWCZd?&%eoCB*oz^}4iwfSkta zDjtkF$}%Iou6iA$%x|msy#Agz5Rg>|@QVg46o9(W@N=}sUkdOkPMgY4j4X5 zKAR9Ej^*=rdK>+%8|`3n4r_@+0sJXv3H<*lghNp8>@U%q7^u41?14KKfXu%U2^)}D z1ww`WM}e(MVCB9L#9)j7%CY@UOoX%+LlJSMv^XxUMo3n37A%DFihr~7?zu{MmY=gM zThmS!&icLZxZbA62G0axXrHFb))Kb_sU>zL`et?R?1jh=-zmh$!}?x2WkSfv*|iL< z)zNAYUww<>UPUT%!yHc47<%tFbV?G-U;Ru7+u?No1jc!)H8?E&ZQ}wK^ z?PTkVMa%3z=ht1-+U~lw`Ke}q*Z4g=n;6Ycs!8>kVdna<%0huqBKu1gNMe`(fHg(j zFth|Lm&V~z#C(PQVt6MSGL=pfpOCcAn?mA$^zc0Wo3tfWtVL&j>vK)4kCL{6RB14Za$uQp;#R@2@{V-paK#D4;c+izbX{_+*0*3U-whK z98$zxaWuTenae)8>lfq)MY7^D@R?@9;V)Byus=Pi%smT`HS{W!H=oVa%>FO3L<|hv_!b8|STG0WBmdf}g)$(WRe!D}L^%5B__l!-u4dUZLMR zdbpz*0I_~lHlis0IzI=&UJ`R3ycBei00eY$#}}hVR1j?pkGxR>kU*qig?I)r%Sr{kngyfws%TT>mYqi@C=x%al zesaEkt1~?6<)=-sE9?z0p^>Rv2jNP*I}DUtSjR6Zg3(L4;8VFiP7g_mTGC+K0DE;q zT^Of1E*Ig7>PLPh$q%zFrLPmeTeriS`F4{_0_pB&QytYR+fN34PiV{yVq!>^r6(bH zRDo2aw|lO~YEzFZV_oECQVb#r2Wq?wO?XGXZDE6bY0uf3(Fb{5`F!niEI7!q3D#_~ z&{#ay+SubqgTE<|w`(|mdPf9lXVv#e0t-9P&HMj$--%s&=}mYb16*C`M1Wth@>O9d z`OIlNlc1g0CF9(c@Q&1-$p){%X=yU2u7$6hPAiSm;}*CRg3}-L)cv?93OrpeBcemk zB&*%k%ShN;a{gPWTYF2uw{A*Cl)Ir@P!p)j{YXlExh3}O6q7_Zis9pPx}Yz|d9ra_ZRvxkV~Sz&x0GJ5_H5}Awb znpI!!!B+KoG<1L77Jo(^DM^L0mb)?N8R};b8TyQ^t_w^s7g2s{Rn zju9&}$}vdcC+7@pW;1Z*EnDV~o2j=7EmuiP1<>2lv~_lGaz=CCT#A1cGJZZ~nm0+} z5B=$X)uD^u{%pUa0sf$s_Hj|a4UBUyq#r*z04R`F|^(3@)}bD{+bQSk_jX{q6Cgo&8=n{qIBhqrFCJe5j7`_X|3yCXs#WnEiWlwq1P8_2(J*gJ?hZ=dkjmNI!-N#xt0;RE z@__ct0xN!R&33kjBAB%QKJ^7OY66>tYpdz;!}$Sz%vM@gLCMN#e`Z9o=J%;&h%v)aje! zkdE}!KHnV<^7pe|019*7A^9WW)}G`bTtfRR#mr2IN?PR+ieg>)>O9^4FT6CL27gON zjjy(hRPwa1ecN^zZ{h?|zKkQN@Rkfb_N za5nnXjF`2I+#i)y0DnaD&2yzt9YqF`@oPgoFC9HlHScIKe>wWgj+%Q5`S@xcdi`=J z5(+~kCF#s%!G<%{!J3CB{FZregE1T8=bSW9>K1A;%C9S$?IVz(pR|3}R*=h`6f0yt z2vVmTG+CCWqQA(PlJPIo4$?Vzq7Xwx9sgwIl}X_@|D*zaSUk15yrB%wx&rt8EnYG< z`?`I#>x=Q%>r|vL{T>>SK@dOtF-aL3Nht?qzE|?5-4W@y8#<>2|6tGH(~rY#{_-2i z>gjDY^W3KI=g%Q4l>>(Gc0vcLg(>HbtqQ8BX)*qFC9!{T6Q;B-@PPSd+`8+$AAQ(b zvKP@99%^Fxs-j}rs*`(0s(k#C^f!~ETit2eeyb2;stwLrTsvZBKcSLU0v!d|MWjkM z1N(K!U}@GDSFSMDCSH$Z-$ydSm80LhT4>_D`d`nvlU`LN5W z{WJD}Ii-{U+PXZ*NgqB|FWhebyyt}^A)g4T3&JFwyA(?Syh>MJ>!73?`mzFc6G#@v z$ei;cD)S0-GKj|jpfnn0%1ygR+jaJ_If0hzh{plEcEm&0AF?6Bq}?aIK*A`2B4u98 zI$`@t>`5r2(^>etXqKr+PR!J{OtH+7OcW<1sYIB@fHoZB*ZE+mvbd-KQn(=6DcJqS z$obdpyCNP@G`U9?S2n(u1f}*S{IAw+wW|LRLJdb;7{so{J1o}nVED>q)2}o0Z+K>h z_@pEBNNKMC9)wRdGUftsy61kfDd-4!?xfa63Z;?xFL;RjA9z66kAVEC44ZfVX&XVr zM-Z2GjG+SUAs7 z{1O@~En=6Vd9Zjumj4*pem{AorOX2aXdOYz$E*JSlppyAjvl>44}sw>0w>8xj4L4WS=V*75Jm* zt@OG>+8Svh%Eovl-zLp*ItwJ=tlU0#bmZ%4XEOP(XSwJd)5r}ecjx6_A%n67mTntr zrwPU8d#lkY|L%ReRrePa!k-9#hZ8bxo^RRR>`a4EbL+LcqgwzTW>?uu`J~_ZAAvp2 zYzJJl;qeWhF{N%^7Nj$YlKqnc2-#EM7g?0&+0564R9yudE~1|yY7!+4zo&Hj+rMVD zpVYn;%0V_0NT~!5Bn-#1c+2A!XuCgs480@CnGM>G*h#NpaMt>9_>55k87H88Q%K&R zd@om){nWPXJ~Uehx;)bj(^8nno%Qr#9o~n^*BQ@ib2Tb^S~Z)-{$qH8`JULF5Bu~x zS#~CDmuIPsoi}4RTD{pn5!mWyO#|RqxcH$@ zo%sigGB#D;Kx4&Ra8bnUvJTbGWkx@t&*(wK*O-)vTec<>7?#y`KiP5|I&xTYnedH! zzw2b6!pFmO@QTAP%s@N1tNg%}P3p|P-mE9jTC7*;E;P>Vy#Dmi(G&H-O9eAX%AFRD zQaJY|f8h1SXmA^b)&kA;P=1Y7ozhK&SoLm(c}G2K$HeRV?w&=HcR#M|OvGEngfPqx z$c)6YGw3$D`b>HPL*dw<$+$xS3i^Yan~Z8VobC3G3de%mvRcZ!F#3(z*(+S1_wQyR zI^KSCRGDGP>mieK>=4E8cC_GgFyN~-Qa_aN_ltWFFL*)AWpAl1cDcNVH#~1$L##Fq zyCOEL?)v_~j4YlC%YCL(nfH6j z-~FYN{7CpFFM6bc+rw3S%nzc%>+G9j3>&RSU)~!z+HZX@oDWW~G^NY1dbRhp(<8rv zqQ)_M#4_V_QeDx;^-tX+yv_uEs%iigZg`)$Kds`qUB>8XffU1GUY`7@ndeLKy zpILiS4V#pWj1{P&iaY1;XDX7K87E7xygOg5ewsU8g(i_}OE(W^;~CNcUyyW+t{>S3 z|4DlAF(MVX9WM56;yw>;@B@SjOv~aGty3g=RpYzF8ia3xseBFjWyW0CZ?B$}EM^dRFgYs$@%-l>~&A8=g!#o^6YqH%Vb4znOvbU{V)_rPE+#|is z!|7q^A7vA2)Q4h4fn(UiY$mdJrtOh`P(3>haj}~|kaZ87yQzRqPohXaZ6igXp8W8X zwE@V!AmKm%eC>Y4uvnq5-;=$^PW02vW@ATUy<}*uGlq4sem$srA`* zExG5O3N65|gU7nhc9VPq#=I@gqPzpb8C=CYc~G2qhB?Vhu1(+8-;6g=vXsWau^;b>ubGqqKfzC_^=x=OQK5cxgtgJ)xd{QT$Jml1{*!pk0%`K|py@uV=n zln~>M%3(!%=Y}rj0mr5^YfY`Y&J?-w#44?c3MSz~tcs+7tK?mUzq3Z-{%Dh{$dhV* zkbnzkWE{{Vt8khesoz+bVQ>3^53>VqC`>(d@6;`~+ z!S}nX$>}XmQZ9+%t7@6saO2Vdzutl6dyUj|Z+QSRLf$1&$rlH=av%w00?DFQ;z*krM5%vSlZ0g!2-E2Q*+3_hrod4nqO}tp1&Q2|dxNm}nJ+}@WuZa$K< zCLuKK_$ci9TEncs;WKnHk1Z+3q#vv*Dq@t8vBXg1(7Nl$kGO5GJ?s*pOD|-RF>)PG z;Ua&Vuj(q*ER3#tdsBG|Wv?>cYR%TOU4Hw=pXO}7yo+qO*IzRs>n+Sdw0&m*y7rg? zEz3~+*S?_Fd{G!wxhC8KP1GsOT7KV-eohY0&o#YSWx&Z*dHjkc>VBPRBu*uHukOo_ z3;|`un5x6VKBU7_2PUHkHB~p;Zz53JAm?#3Da32z`RBYlNA+%2oY&Yn?tUQA!pYy4 z^vyf{QLb@#xJ=E?Zg9cP#~Jelh^ga|l+C1^SKaeii}|ShOu^L(Rt7<|`}umzqn_n` zi)X#O;tMwrS*87v`X1~YW~|FLyZQE)4La4DnZwKE*2P;;z(=_b9Rl&6+^sPs;*!S< zQPhsam>bJjBaWTMOfiK4Lue1ExyyQ0Z@;aJT*I(U_kLiv6?As>V-x{mOvXaMa zj{LV(lp!lVGDbTc>7)sdWYW6Lp<_d6PF^=paYSrQsk?9et++Co2cH~}NGE=p{=Mf&3n0zk|L&-;1sX5Khmy?+F#f*rhYcfHB?p-Owz zhQaExJ{=7z{(RWapQE9Yc&$}n5x^bym45%WM3vEYJl`bgi8_1d^2`u&zR8dk*71RP z^IQdli&d3v32(<{?O$w5W!~up0CdLmuRhg0%0#aP9~}$Md0m!!o_Z@_27V+Y$&83| z;Fsg#1=h|_XOcyfE0CM7k)vS>4`VKJ?MC76whY)99tsw+icU>$Z+PnhXT*h))PDrUPyAHV^66!hUhYso!-TAj|j86qJ`(SJVqQYVV-;%-!w0d1ZTk;{-dw0^baVp z;FG(5Qp!1zx4$~XjBmVg`BvyHwFXW9Mc4i8JgvJvY$w{f+j;XV*ry?S&)`cbFKAjm z(~Rjx3DWbP8(XBC{*NQPeb!gl)m`kby{pk$O|*iECku!(EIcezC=@B07 zSoFw@^qE!CAw_7`+`1pXqt+*|B=x`{2Taxd3!S&MI+{a#;+ccya=RW0y9j7PEQc`| z!KK6p^zn-=9zmA_mRqjfZ8E8}2}vzNP*B~gPe#p^ub<6C==_W9z~G8-t>!M}@5T3^ zYmzPeYII=1251XeAFr~?4o>qrMd02QO?8C)M}6pWcqdF-XJy6C%d3-qrY+iGWZ5s^ zWRkdw+w)oVm`^+3mPPS8nE45!he!7Fz;^8T9$o@F)jW4|dd{2`efLU3g`wUT1#nO+x?Nxnr%5{sd8HiH?SzRP;Sko2vxN}O8`R^cf8y2TBEWV;YqEpXsBhV~(t;t%ebRdj^r}R(Y;NFYN zsBJRC(r52Uz&-l8nLuLQd;hrbO(oXZMt7^J+pcLxI-ez$*0iA4IxbD87TOS|3G^zH zCe4AmQG&Y=p7x>-ZcqNHR^{6N;`e;D$8XkBHg3G3e@irrsB>JLQ2u9_ku&twcemz` zumy$5g9;fDC#`aa5RVR{LoSD8pau3tN1=O-7q;ZH%!Sb}sR8LW@kISV!HeFq@>%2N z1>D=;#+Rg>Yp@4J`(m@Qq!5!0Y?FR(ZbX0wUX4zB*v_v&Hm{y1LRGQ!@Oo%zE8HJs zNX)v+@}`<&*F3+0AyBtXonucVLS>e&&l_7eUWPE`mH);H!FX_~pprWX-NG5QEH~Bc z5aguWRr~X92K|*odKcwcFk+|>Sla+t{4W7Uf5m<}OfD{BOaK?xO7qKXiSh><5rW-T z_{XoWZ$$6vlBNPBCl{=Vu5|YgdU;^C_N<1Y;7W8&;gCF65c76eg1MolUA`HF;zCA> z=4)`ypyawy-!+In<`k}50nRH4dhaVN-m*LKH}d%3%5ZHB0O;^i#e|l-r}Qx}9J&^< z4ZF6zyoE2_SD0?QX>GVa%^?4tnzB~E)k`AbSiQ?n-NtwCNF!Cu_zMw%>hRbL zdmAKYaAt!%BKEtS{%@t3f)QhSt%DPhO(H4h`>=N@<5pVY%WF?sS(AM?YczFrrrvqz zYP|`thm%XPR>6JEmt@0FHtyw9xCVZtxO=U0X>ci3HVVR?uxJ8a4Iwa>d*Tgzkd`A| zp*j0;-X%4yuuWp41uE;cLfT|R;&I#XqWD_XY!Vu3w_r%}2kbC!^CxCRM9VTR-@ETS zy9J-%w$x1D2{O4D4)$VOvq;H*fW8XV}5v=~a%L_7|)4Ux3_0eto!ECzU zz|0m{Mrfb*K=unw2B8iP)RT@PQpoPzCNJ?av-v@c5|9%ocmNiD@YHzEbp2Odzh=tZ}n^A)mw?DS;r|XiWUq)KdK2gz^hZ| zk~)(5@eH&1iejC$i;liNriq>p8V$cWXWJG=YHl~X9el}e778{Rik<@Ne!l+Zo4O!H zOxU{_p2f`&k;67alZK&ze{<#g7lLIYZ`hfh&bGwG|NqO%YcR>_cij_ny=gyy7dBR@mW1Z)r|sD&7+3Vt$A`8CLq z{P`u}a;F2^)_1&Q{!`KA`Ob3Z@Gdh?gv|3;$>|Fzcgh$8{VkSqNZPDJNCO7dM=lq}3+Ar`H%kuM6=y-TuT zY7z`SmlZ*4AQ}F27Z8sl`6KtWn6C0Ai+;{DJ$106IYHL3Bgw8YS&I^GfQD1(Ka?T8 ziFYEITixw&PmC_t&7PJQsMu)?JV%%+(Gg8RuW=fQ%NTryLS@?pNVxK;#cevz^J>Ln zBbGoAW1CbWjJEY%>IwcV*O6}&d+U^yL4UOS!ZcCuf}YrrV;nMA=sg{WZ(jP~O&q3p zcTRm!;iE6w{>aX)m!Y0iZ^0V7`-FzjAJjTSuOSr>GEvTbgQaq%AqqCf-u+t%T7b6{ z$x`QO6UhYA5e(V(qzER8&^K??D|vB?`N_)zI-`B?(YtUM5X|J=H?D> z)2+9TgKTDoT3p|Z2SIvAVDw1f^!Tr1I1FP}DMYym^81BY(G7=9ZxT!GoyCPA*}vAq zV8=373>?%l>bMu?k6t!bd*{EgEhs6?5`|x_z3w%lf{&G*7fN!c2<^RqaA&WhhHM2X_Cd z>8#xxKV09hJ-~wyA)jU-{J=&3UUnWpEE;T9ui*5{iy`>#rg(+mMODw2lsSuU_ZOWE z)E{$+cQOXBH6;Rq-Xj4potq~HSL!okGO4fvx!mba9z%MObr4#wpqY%WMNHT$pgx?) zOXQVbnK$wUf%R+26SCw0q6>8YL0^=Mf(#^o17sAy6)CyEv%na?JoENilMPO!M|tBFhQqSG|W--H*8aM$HQ#|bIf5oCYV(`VB^ zI5nUSsfX0Jh}}tMc;UdOn4qupz8^2h^8)bY1u~M{{R{4BBisuysyRf7)H**vc_#nJ z-v&|ybPOa%UaQJlXl(4V;P+;qCARj3xTD)wK(F6Ddgx++y>y9dytSg;&W8^4qN2{# zHW@6v!bcc76s{vZwPCnEU75aE$H(oU@d1h|)B;LYR84V#q3HPz2;;b$riP^+VwAP; z12{T(E4*#O7dIsuN{X}sN%Rwpf-Wqm)XjLa@dRGi10p)+WCV^WhmPrJ~#NJ zp5UciB;{VO#!vLzm~h6a&QN!9X_J>KGh|tam~EkP&G5jy2KR_<>Ey~GvaM3L@Ln4C zvW*@y8P%Oqw@>SExT2cxVYqVM*2?DvVQV?exuEKx$F;eow6wG5c=Z$6uOmMghObV6F zi@!)SBc@_5vcbuid3rGO3IVnr)m4xP^b)WGk~(S$bSjmou^IodJ8j4Q@kfdZ5_g4~ zwtn%(H+c^LpSES{V606Kk4Qft)~|J3JBS;T0x1vbLkthgpUTzdJh!UK<1azmbZS}k zLG;<6MOh5dfM@*@W~n{~6c&CiMJQf01ASlWMe^@1v)D8G31Z@GBv*O^ULq=`7%yRdLM z$Feut+-^va4M8$KEm^R0g7ndsfsgv1ZGW*!Y0tkL;whdB4z?!NNBj7R>#%8V^0(pG zr>@Q7%wrCt+98}_8z8kqW^IRiLyh4Wl{zt&0w*+$pWoT%t{`dS|G>NCiOAoRMgBC$ zh>d4?JwLU|df(7FKD|tJd!&hEPP`3 z5!%NlrSvhB+?zNR;8D!w!kr>2OMe~`A+}DHFDIYw{$1i?d7Fu+PKQ*)XW!fbN0Hjl z=j{``1HaJx<~KR*CDXF09=bHa!+|ICF1OHU{-i$nsmjC}?^5-&pXc^%kjfk_m}KD< z8QVdpPoqxMwVqM9Z#PCqsPaynK){u`T}ye7vHBL|X1A_zlA5)UtRTCHk&zn#w8IRT zgr^3HODh+GqDYhFUbq7Gahf2N`dz0PEXK^I7yZ~0`R7227fP~Mgc8GV#Fo_QlwL+r zo^4eDMdgwQ_=3}R$p4Y@b zHR4Pl&S@M!pY=VA#CfS!^`yEU*mG^aU#_Gw#Il?!=f0nA+l#L-JLvq)4ldW-tg9j( zQe0YVrIUNaz}OMTyk-bZf2@VaOg1K79JJrzVUbu9v-2hn#y}H%CaayE${RN*Lm(qr z<;A3YI?&e5a~zN&6U7Amd_)2!OVnw9R_B6^=n$o3z@LHRNdc_;dm zg!T^#BdU;F9eR32G>Le~wJdHK5Sf*wL^oOEZO-TWJWLP-T>52y6C;jZt46c!wmuEO z8&%?MdLyy!fUduhti016y8qR4sWJWlJ6xVaOh!}{dSu76E2FCWh0vT@QCA)lu@Ytk zfg=%#zV9e&5)lt8Q|L<|pS2qFcUfh(X#QxRq6!RuYoMs$i9N$5NC8p1WriIqx0AJk z>Tlt(Y1hrwH|OmwXcaE73Z+S7j){${F7|BKhM7HK_+CXWEr z^8In%+=x}n_-@D3Ibq-_jNL>!zI=%UHLb=-=u!UI$vu;Og`2RkW|h=lJsT(@n~rE< zn`pMcc|LJfjBfla8FhUgxb*h6P&cdEb?+U#`R?iL`o@mt<^I;r4{u0n zXA#cF4z1C$dg5=U&*Ih);yvSooemrJh5VM`1Kb z1=jwDDQg`3Wm8Yvb_8Xh>8gDj$9>f;wev^wvY6o8332z%o3(k$p+qE|S|Kv;KTyj% z>An%;-~)jde3FX9WUA}CBMTb2go+&FmBa@Kna+m~)N>idJ2qpaMlJjE z`dPVYlQ9O3-z=k-v)S5>Vo+ipN2loFJvKu3wpU=58?z5!)dc%ZoZ8Q=g&Sf!EVW+- zDakIf#`YH9t0Qsh=;&-Txm*?$6Oskr}4Am;T`VUpb}R*QnGTq=BlV&S2RVZzL?_2OJ;?$3bRQ8bOMe|NDOiH4LiFSpPg z;FBt7Q(^2O5278S?R!b&CPR6weX+yb!>zg zw-J9i11JMrH1O`nXDx-PVSBx&8|b;?JueU8+xYb8dA*>5Gu^j7?w&8IzF=xY*%2ek zzSsT*D1dIR?SIk4`2Wy^8e-i!&AvBz2mim$Qv{koKs&Z>J`!OJ*3gtllE&;@da> zWUK8teicOOJ{Pd9GeWM7BFxX@9WOjxTtI8Z(FxnYbJ{lI3MYQ=HJEA44}|uZ@~zY+ zYRnPuGu58vhSm0Qs6P4qA}?tTTQNGzYT&!2`2dG$E9v5UfGG|MdH4IyLJcP)H0t50 z&y)NwZ)S|26&6()cBvhI-_+0Cue@BAr7L)9K5;tHhGBW(H9vO@YP5!Zd6Q5L zipV@Pu&5U0X-@`UuEl)3KCP=YZ=R^w zJycuJt08}ri6;pU4^-aV=BwC%>h}-;Yy$w)iiZfmi<_~^ApmVVJpu~os-X3v33CQ_ES6>n~ zPCu>=uiflkXcbB?A^DKG&{(g5p>5ggh-jd^@sD#m(*IC3)8kM)j)c1ddJVl`2D8|% zyqmIC4on_->h54LRQoQBkDhU*M;ber0-sE>_B+J~up}zOq;-!E}EsL`^2a zPZHwh+n(1(Pv50c$!llwJeUY9!e9Z$!KlgaREA}e29qP^_u&WYEObU2P!SHP9RXZV zgOtUjV`>7gx@_{S@2b1Iy&ru2roKquJu=bvXGnHV1`%gdcY~X{b-vnK^(P{UNi9W| zjOYmy27`pu4*W7wi5tiM-n=)X@5GZVVCxvQzH+WM`5Vdn5Ju=X*_TZC{!e!yhUYb( z+WK;B08rbTGS3g=Ww?fndX08%h}x6G&w8?MJ9AY&tV2BS>l6t{H}$sTt9Sx36h|7# zxry5w$_RI|yp8!R*@mi0;xZn+FcdhOb#?cGpq}GoL*d3=i2iHdpUwlLd!43iTAl_A zsv>8^6h3J0*MAI^CHj6nj9RqVm*$lEb-z5#!vYw3>vx{gnSx__^Z%`9z z+Na4NIUrTFVYmJi!a#lVEgOl%Kg~PynF1(?3K5<_SZAqDQWTGu)za_G{o4yy`KC0f z&AIjN`pRJ#dgVW}=!UJgX{Npp89&1Jo=Q@UKewu(t+TwYk2cu#vsBiw`Rli=XMScw zultqsff6kn2F?WQ556k+r1?wsj)P<3w~wsi4TzUf!u+y@XX4~H3Jm`>txc{arEF;# zzJj!dd%vlU{nA2`ZAK}rg0$e&q(`Ul_Ce@9-i()Dqjvw|9~!A8qKXud|J1*FWh4wk z%agTh%>ab7L$|&(LDf~zBHpcYNyc?_Hi4?GUH3;Oapj%RvT3IvCvaOQW zUq0-t*Y-cWEVK&Xd^EpE>*!nVZ?2SWAsw`S9q!U(@Mjx1ch=T5-cr+`l z7c)C*_;*J&~u0q6pRO zJn-@r!@sEz+utWL3zR+a318<^;3EJeXKaej15*lKE(3_ibMgsRBDJl0rc%;URbqI| z@<|hcfmZ4bKRE|HU5{4Ry7WHN)nmH*&l_*cKnU15Gf_qybheZ99Ccl$-CtPS&tT(z=C|ERb7LJ)(mDs( zG(mVDvMfTOCr9_3I3K`;LtVlJb_a$h!#B;EN}fX|cQ=RYaed;vyC)=nLYFesPCo+{ zlS+$UAI2Zqt}X1piKEBdimy&+oHFk3SPPYqFHqB0Z!L*aRlz2!Akl@V$19B@rdqVi zkLn8Z2cnNLy;iY(rBY2$95x_(Va+;x9_RX_kXoGIUa@4j@N&&ZBetLPY_x7GQqO}T zcOIt&Pi}35Krr(+6qt_kCBb!QU&=3bobbURF}y4;LQ8@%K{L{(E`Zt%UeOW@aCPgz7I&VS60iCQ%@ox#wfq2X^Kk^ z-}WlMG*Y*aE31#Uxp>t6orin5`97U=&0+%eXOfQ5Ry=Ed(rIyRn^(aNbU!4$S^pnV zXBpIHv~}U&5E!HsE$&5%I|N#^Xj{Bc+})jE#fm$@rMMM$0>$0kiaWs_^5x#SGhcq3 z%)GzP>~qfAdp(O%9?H;@30yaCYS+?TyL{X=?HCoiVJUkiuFSj&A1eZT5AR7AaVK0b zBhN}HxshQdk6xt~N1BA}eR0VZ&>ncfxGQU<(4yH4*2|koegkFt7O{x&WX$^QT=jaD zAR=UhR2#-pdmCgeMt@xVs&E)ei7mA#z4?@Gq(mb1@7_;t@-c1Fa6@2?96D|!AEwK_P(E5dZN5{ z>JfDx7-eIk2T%^Cm@v{4v3^|{u>%?d&;k@rt{DS0>4$6=s39OWQv6 ztAPq5OLx^HXbo(AABNEx3jMY|~Lf z+OMcxQ?e0L-1`GDBB0nscIaY+gja>@t>K?@^9~KolZs^+Ii7_h5AD_dI}cZ_wSpFU z9%KJ8|HXv4`uNW8a@Mc5e3N3tNslwK2jX!AevH_fzz(A2y+}{xi663xy)#patyjvN zFuFmD3##D@%8oK zf7&nCPVWq1a^whgw5eX{J*|uP{N4M|$5oHr1Qa!c&LQ^wtv0bG7~Z5Ze)R)VjokYl zJz@~?ha-}*Z@?3tTnX(% zfvAwZaFFaBLXOzj0_M7}EZ%j^GTYN!)${*D{*a0zITF5x9uNXhZvxbBbRemJ+EGVP zA^@0)hWRu}J$p!e%MGZj+phZEWjsBt4O&CW1L7;f3B>~*Sv**{bxoh~+DYpl97U3I z&j}A=FYm;L-2VF5%;m7jz~A9Eq5@20Mh(1OjQVE$r|JbGS); zyN!R$vRYe(BpH>Pe&NtpH(1qLv!_xpS7;{eg4+vyw7(a$B#13*FZY9f6Uq6Fv){l1 z-Kn6}3Ag)5%j`i*|FFpW8&zK@Y3qlR>30WWo*FAIs{^)Ip&KT1&rCu+qMI!&Abyr_iF5BdhUsb{J$p&a&<$ z;Dt|Lm2vmf-Esfod1~E&=vZ?gb)TMTG$osiF0siKtl?R)RB$;L=GCF>bF!I~aic5^ zx~)w{)kT^uzbqeR7+v)<#@BDkcw8&JL5=^J?FQFXo%7Hqz8BYe#VOW1&Laj-JE4=E z9D@&%v@&CCpO`Nv|0hD6{=W$E1#!#qRM?mx{SPbxVbwq=5U6nYyZ@%0()=d@WYtzM zeZ)d~=8ug8MmPnnMf{rj(m*%TyG>%;lI%m-OWhWxI=SbF^}J|^7fkqtw0R`_2)ZC~ z>C#wSzI`>(!g~e1)h=3~P;Num#QH}m1)}@PyD8A|;$`vt`-!3J%^7@S&93w_ zz)q9KFqH(MCpHknXZ1_6s$UFYzFfy|B3z}8vK{v1Zi3I^Cwq%4MVcN+x!!VUAR)dJ zh^LJ1sO$ipo){V(@IuK?#iv;iLa+ask?}pCq_j98IJlz+|L!Y#w0qbR=^ptr3^bJ-wr!rg zd!4P#S*sL09@k?dpB3Y9~h zPlZoO@Czl+%=+NfL#MZCD~omwuMwjj-Ea&nY4?6tCZIf&sbpiJoDXJcXkNlBcMxFb zD|Z!AhD8`4QSr0{Nqi|wtrNTZKHWOLrq%SR>LhZ>apI$*?|k*a4E?qkgTh|qXI%;U zS?E;(2qJc7VIg+1yp|FfiHAlCm}exjf}>6NKi%2B__@2ero^(3UERFHGJx?;Q`L5F zKxNXCrwFLmkFu7e%0{0D#wu$(N zqfTZW`l|I(`Bi z^HnV0Igwldfjp!V<(tk(6LcaM@_|=c*bRRy*K08mCwt}wAtX-J>X%p$imk)B89*-p z@0I!bn#zgh%E}@Ay}Q9wT`obLsSpB0h_fBR_ZIaPYXY`x zY``D`+QJ>LNtc-4#;pqd+!6V9)LZrk*SlYnf6cq=^u%G$Qnf-?LYPUd9UHfy9I%-U z*GnGLUIO;b6E$>tj1;hla)Fh#)5}6fD4Ar^aI|ZKd-$Qq?b4<_Fb!GqZ$Q3hRaz*I z%RA7@7rSE_%5`7Ck<&NA-Oh@u(;bH`%6?$94}0l zml|fQgGuV>oSNqbrWeCofq zi9ypm42N@(*1!$`ez(H%1O;s+MCr%L5)~K+UWS!;C6HIrwc05Sc*BYObZ%#zm=#7= zA`3c*=eIZ%H0W6QTHh~=pM3S(&q=oB$r_{VR*hS|U4p}jUi<~4wRYO zFxe3xj{JPft?vknd8tzYV)Al0aOXV#mJuk<2?i0LPn(8c`YCz|W*Db*O4pRkZMSEy z2IE^FAh!{`1YuQOHDWd-smrHLV~6ih$clS7 z61VTb6M)ffC2SA_rO|!)t8;jV5rzcb&}cF5AR*%-k4Q4*o=bYMPOjfQ-9FEXh2S`O zU5iO$aq!^Mw!2?NTM-h3J+Op)*1AVGgZ}neDvicqj79+sl3J1z>`hck7+_wAT{T`+!LZ`iU(zbqQKhc8x-?YjRW3;$|{73Vm=}Jcz`}KlAS}S5#K-s(P}01!|qp z$T7V@=vv;J9bk3~Yg#WqF63Q`7;%%$zLlId0=i+(IP@CvQw6ntsz^@IG6FT748{B!Se#BTr2GnFHIx z(M0&c=(e8vF|>;pdoF;F_~eyqKPH=a>1FFnv|dd|r+*FNbu<5*Kh&AF(DYE)(z#2G_05>w$mu~YQx&{yHN*R^CQFmFKNk9VkU8cN&Ap$rj`n}|01VM=vFS3sMOxvHvcyGowkgMOaUvl?>`HIv(7y=6!SHi-x2 ze%r^<^vzrTBRI!5r(Yv9Ohtd%1AP{nH_=0N9w?|^3Eo_d|Dz;#vaqQ4qkowzr`q;m zO!R>6|K6!n7a}_x!TKk9PAgGt-nl|ijV8CS-937IVq|;dgo_q0tuN~@^zXhXDpEYa zk2*majR*?p#2h_~_sr#?-iyn3CXW#BAZpM_Q?*chCs1=GY^o%DLzUcB->c$ZqW_I0cg2CD5S+_?@jKsOMf9M#qVJ{v7N#g z;}y%d4L(PdE_acihSz@Zyq|bIJEcsB={xlWOZjBSG(0VY!jSvzvw@UIrpul_0UdrD z+NHZfw1`(rfdf)8$TXKYf)606tlheO?vNfj?fWoIebfk1;7=G>8Q^=$u(9Dx68&)d zwl2@M_y_Zt9|sE!_C#7WQb&{;j$nE;7jjGt0~0Mxh@j&MAm>ap2j1tSWneWv0k`4l zXg`x4qTMILAux+9bDI!-#S*;9Qu{nJYJoM?b7eKx`+a_0^~JyQ0m~O>-(%XF|A}nw zLXQwTL^x+MVgjOUb5C+NDQfWw&k_cScX%SKMn!rymBdTJ84hGw)Op@EF}Ig(`?Yr^ zsX7zmxq+{{Yb|$v;v=JGx1d&+1;6OC93!+z`t8g<^dg#7fL?Xr)s#u}=&+f6)84EU&)G0Uv%h=!CooFkzIZ-jY@Hs<1-{6S@sh(r*Vfgxx#m(N;K z{P*!20PTUwciH19+CxBXCx3K+hyI%bv0ng52LluU@oZi(W$r%E5b5B|TFXj{2{9DW z)Qu<8RQ2_7^X_p>vkae>bQ5q0A&NW>qr|>37L%l$wEc z^VzUg0cVlBR0bsUINPCDsqUH3-V>9@sxOWN{~GJ=>w}bSzY##oD7ezvXjw~L{>adm zRDDvmLmwGsVsLf6i6Cy?L9Xfsc#;bL+iJ?(pcXxEDWqk@s%IG8s zFi`rmgOkS~8U$gf*L*llWnM8g%i7!=sB3#>*w1P$TIz){yFn{%%4bHBsAqLSko3Ls zr+I^cGw|iOf96vmVS30Eq5Um~QgNZUuPrUo*)%92~$5l%i-Teo%bI0bHOA zw13@d@Tr@a=fC}VXhTRSI?fjbL!%lJB|&l7&j>$MzP6q`5oa9HG_JXg!Mtpu4={O9 z1C}b+f{{Ua`Rjoa##c-`QjnqjrnkUdZDHTe`!DK50mxv?(MRG7{Cy*(pvYU=Kef8o zfvc(>1rJ|OGlSE>pTfW4060{~*O9;oeE#HF;LCj8HuCQoE33>`5C(uPG}S^LfCG4~ z2i%JzaQLT)hvx6B8UTQycU1&DO>8=#b)ef9H!J(xV3G4&&L=U)x6inM=x0JH$f_gz40?L&Ji z=$E-cJ=rSPWy0Jk{3F5fjh_T}Sf@60O*b_k&vk6Q0FE|SM_GKo`^x5E^%n=|#d#}Y z&Q0-8zrsfQMyfkIrEn7t8swpO&DDE`6h^dznNMU3(dap&B(LPlFM9}((3qhSrdXE3zHe!kkj9sezQt9rc8 zoS)ufl303$7B$aWWM;P2&<0i>GePSm`L_h)4e|2VjESoDm*bp{qzCU}h1!&BGVQDP zVGo$6C&CwrRgB4bH-#B^Q`3IE1#oSM&W+V9%E<}zYKHq?;>kn|>jZ9LR`z;S)Nf>e zdr^29%IbXsG4}mMTCY-W)=nn-gIs?d`D5o=IMsuTuZ5dw&5eTS03G2O&$bCXL}eeH zJb`3v$AO6tPFBH>I-vxf`nQPs92ST~UP>FP{Ug>_qi^X?KzBF#nT95Ss1x&K47l@D z=P!?W`T<$dpK$BE_=O9bvdnqnV`=TDcmgb>>pBUpW}AB&Y5;}7NM~l{|d+MlriU=K!s{Si7>G)foxKdn@QWCkh(&hlHYeT>Ja9H70kql|fsszk}@TZ12F zV+od2Ez|=K2h9xGBqYn`87FHN<4zutZnqQ<47qDbHZ7N~{CZ>aO-&er<^_QOlxo-2 zV+(pbhxNn}T|km@^Zi}eo94DwJ@=0(TqQ+$@eoMj8E@i~vngH1k<`;IEQ>qLKpi$>;=|b_h#hg35&Ljkc|K+k_Ch{I%c=_gpHP7?k|KVsFg>@g zh<}5vc3sl{h!lvhQbbHC#eYSL|KcSOQxg@Gxt`pTlaKtZT1~B-jE~w4Pn=$(U)*q% zVs<+O6i=RV2G$|}$kn~5Ti9`LMLXj@FV(B0xKPAg{?L8i!C|gF6Qt-gJDUI6ZUCB` zNsM}@?{RrL6-9q_7b3?FUHk*)||`A_sC^{~{f8xMPpAw!>#8*LA0xhINde z=NDWUUVwB+UMnn8Yt{5?_yV#jEp35KCYH39pNdc5qXw#PCzzh#UAks?S3tWa^7EN z?!`#mUNi_^F@ZW{f_9{gCHYhdZ~}U2Vy+Bj`=BOakFc(0ENpYu{G!&$MVwL~@Fb zaw(&{B`*8oQndIQ_?5)F`4g~6$6#+tNwV;LW5;Dd#1YtERd^J zu}ctmogC_4>Ej)*3_qQO996@n@ZT8w=lI!+@@C`?oK4vOTa{qZYi)fqoY4AI_uo?%VnNJFqMG{_xeVn`APsK?nbD_DkZZ zSg+rKF)O3zgRd9EwX3|oj44^xdy74PGr1iGNw}5iuCa(|$2V^#b3z~I{Oyi(RLH73 zuNzNJ9c-xI7OrmNH)Iilq0)60yyly_9EqKmfhKjQQuAu-+|0&B)~@+eCE>uLfSXM- zj7OUc<|8b7svD+HV1fiUM*aQM$p*M z7yn9w;5Va+26y$^UtsWXZbajXCk)5%10X5H4%1%yB#E5djE{+)=NVCq0-MLZq&|ebIDuezzYo%*@ zn@xnFfYYF5f}L?=)tuGhph;m0uUw8-ry)pgWwq+DV^JC^B+i3O6t}@1nv=ClP!%BW z28RJ5_e=04vM12%ddQV1YL8I!m>&eIS z0{ITHv59&;-@I-cXU|QiY1n<)gPLLuF%o5oZ0u2kn59OIzeAb0UsNsk(kIG)19r`X z!(*(sF}wZ}PzsK~01@v|>^_yh%|Nmw|>b&%D>)~HGLG>gJl(!^iW5Xg5 z7C_h)DS51{Wd_E9k3TE_e6cXfBn1&5Kmt$?1&q$@c$c{rCm18HrSDr0&57yfFRFFA zbCV${oMOjbzN(9|ck5grm&_^ekZ5;Dr+-k3u?YKi>u0V9>amGfLR=c@zab41SCv0q zyhQ^P?jteS@7B|iIR5bu9+%+{e3%j%nE3UM7!^CQgR5G0XXpAfEL?&h$+6l7`h_{q zrK4I&mc}7sZJ8AbfXE2_?Ev*1hP>`Q^7povfzpWLBzxK~mvW?qH?m`HkSsbV;vwFT z(~GKYKV~^4EUhT=K75*+yp_WP?XUIs2ZZ@i9v9De^`+Z{rDOQje0Z55`?tn>X z-E*7C+3zNi++-j1usc~=`rZBUB&M8(3m%&iSI8zehiU(;Gh?fx(G$d+-; zH>H@@EuCpe)p2R6-!`bG$Ga-g_cq&n(d&xz;3NB_rZYY@hx2P$!(HO_i;r~+%RAX( z{F9a3-z4Z$dqTPuoNO5KEK-^Bx{rRRejCCt6hW<73OtRzZCAdl0t*GCH6n+_j zX3?b5bW|QoIhyVi;pfCCjnJ%^L(-w90 zt+VFqiA$aN{hN`_i8)W#q93k6*_H3AbJR4>WQ@A;@{;h=mTgb`Ots>F`W6iR(f^p} zddx@lUdu~vxm{d&|8Y$ih%)Gf>@Hq)1M?wVzUl z)~25g;o_P{^+h9nR}w|u=S$wHNQwuy%>!Big+d}r|HgTGxlf{fZeVOlnMSB@7LM*0&LQ*y(r^ ze-QlaWw3jjBew1&?sL0VpIsLt^nIAr;|$r!OY6xx$7TPQgja{Qgy#IugiK4-9sj9z zkDdI_flp0z`$iL{o;ID0Jfjtt zPL!^OkXcchANre?JpaBbcy#bf2nv&}o^*~V9162Xv`dM7aIE4SX1g8h(5h0=T!yx9uD8?)9#e`u-Sjva4ri{K-!%JwTcxhy1-bA3f)KFqHi4XJ?!ILpIfC96;D+GKAC zf1T{C*rO;1wmxMEkXl*);1PXX!LSLl4=eSrSYWgjTlF6OhUK35k$`xMSl(nrm+MHU z<5#)!iWR}6!u(+%4Ua;LYD40#Th>25J*pc^ zdCMstp;6ookDSeVtcLr}+8Y?wqI^4^F7pIRS9qv~>-lC&O+hd4`{&FuB*7vqUFAPX zFAKJF&I9~!-5H*7nF90X{0+fMo)!M73CRS!S>FpJyPB3(I45SiJM+xQB7NFu6k(P1CbScq2{`rUrWo-zg{M zQj$h-<@sHZHH51{ODj+KQS0pXuM8b866$0JUb4pr5~*4aY!>|M3VZAz6TYH1*5r%7 z@2d+EBn*B{F0~kWN)(#;#q<{%$gWNK`rf9{H!4_{sSF>V#ZPR1*kjX|PR$Xv*@&qGt=Eo;iFz;5_H;$5pVo9OTEB4O17C)FUbsDqwGCkkJ#lbg z>%$h;1s+T5EBq)6YD5>7Ys6`eUKSIyrf2nHf(od4;Dk8;{7?NsZEcVb)X~tR^YI$u z3`;)K?>7}tbSU_rj&d5X;V!jfIS}Mc2^$y_UOyAG1H?{9Sfs9CxOa<%4=hMU?|7j~ z*RUFVWu0VRb7TeI_6vybm-nV3=ssinqL`XiquHX;J%?n`JSCnWrnR7vUHt z-nk`;eV!T4D$bwJ?p=M%Dg(V2ND&=Y5fifJMFobJ&h}^6`E)DEInQ#Kw z0o+&s5a#G!LaPqB!FW7{h$kG2ty$fvfE(dFsx!@@H~H1qi~seP{F`Q>r`@>uf4xkr z<2>!ZtkE30L=e?ZXoWHtHX=f<9^hr~k8!@D%ojjq=URwcCl8p+R2UuyZ`0PxZT-C! zA$z5MV%IB)$rwC)ukwN2xN05i)k9w7_v&r5j`2FJ*xc! z-|(0GxH|`{!s};%N_COt3X-Vql#I0LPphq#PeLD}pRh0;>E4!bwXYac@yF0lJ~VUtd91-1sSF+qp8x+=GtI4oay&U>%SEGU?al_~OjeT=qxKP{Y@ z)<7a?74z@Z1Gp~C2Q!+^-+)audsIte>4LTeL&NIl-~}@m&wCVoi|fid4cFM`sD`LI z=fNKD>(24HDd?ihh=f1qSazRcMs`l@wIe`BEL_r$yfpSjAj414=6q@Y;%1 z%oL~SPRC|yuOp!`W9&?S+^nhThD|!Flim121)Mj>jjo zxBGU>u*xiCz^Kz}L*s05S=n+ZZ~YgOe0!0lPos+bva_Fww5)J)yk7)Kg~q0ogA52? zw~8xxWRbt)*vaD--ySA2Gjex zNCgsRBi#B7JI$Uy)UR)(eF3E4DT*~VCtgPFpY^XO7VDOOd%6}Vo}#5|D3;48wgDaUnZ|Noh0@{9)R31)7*WZx(|(c; z_4cP3H0`W4y_)k99x{XOEU}!k-$njaE#bV#bNYw_H+)!dn0qwp(3ch5eTrK)@dm=J z+Sm7w3G>6yj{C?-4;!|oteiCmB6lrh%ywx0)~7{W@>-YEzE$i!OE($fogW%W9c3z+ z!(|D$aTo?64x2swaJ-N<7xM1DC%m*JwCfiLLNRYMJ`>(~OV7l{$tb#yTHk|bn&vnc zCAxt=I_A`K;mIA}9GFc+!k3R^v7{ShR^h`93ux;`Yrt?cM{#t~P@Qv1EayRhZbm;v z9>(vER|usGRnNDvWS>gv%bT9 zHK+i*6WMbmS|gxJ$XhuNMI&a`3CV74wU%U30@+sn!uz|5FKox$27l; z=am=Fm%9w@Ve<@`IH~Doz)06TjetuSI{KMT%G}t0hF#}@nSagOW;}}k-)w;GPam;_ zm;dV$@J=(?<-1F~|9Fep49eFixXr$H_M{XKP!2~WavV2n>BT^4;&l^h%n0ddi6qp$ z-k(Y;wm?-Y982@B`^0+{F}_3lBw(P3%QNHYlDPfTF)qOsp*MyDQV?GvA0^VA& z8X%oEv}HGbFS1V=6I)a0Z$R8cY!AOVCklY?DSn;wY)Y&C&@-(sUK*?@ zyAm#8ss1u-T094k0-NJEfAC4A0^&aff=8{VnC&IOXSA*S0WV*2se91wU)xbm0OD?6 z_w8+rmk|IP%*XgbWZ-WLy{uU%2eI(N)zw;Sn>cAbgMfY|rTt56TXm9n2$Na;!^Xa{ zdl$&y2O0(LSZo1s$yb24f{_g$BJa1p)X`%MbX05ip3upBfFAU50VKQB>Hn;%)J!X1 zkQw+cZyxK-i4(odmx&@J0d%t(w;T99a8Is%b-0ejUp%}u1}KP1;{ep7sPu$Gr&_1z zV>%-2^#+j8A5gC4$+4J{yPgr|nKy@XBQ+}*Wis(Mm)?$p&$0hTyguL8Dq;to7ucoj zZ~Yls3&xCIn^-%O;vK>A91EV9XP&5OM>jR?5^9K3ZYO*E#N+x14GsHHx0_A2dz|b} zHa)Wvo8{G65bQ4tVrbcW;W)WJAt8Do9tvHM;`l_G+Ks(weoq_eOhK;Z)oh8??&*Ds zpMnzV++Tq@1m+bsWfBKsT`&uwdEfP=Q_JrF%AVq``fL~{3Uz+AXeX;$t_P$hG1AbqiDZyMS&CLL8ASn2~@-7|59 zV>Bq^r()R5+{-}s_}hkkSl(du)Mkfj*SB-m7sVG(HKbQeiUHBII}7-E2L1s%GPB>A zcb;SR*~hPLIlEXgqt8$wX;TU4RdQk4|2eU-ItDb8nlR+vmbwF8 zQAhzH=#$u8>i}gG#}1?@amK?xL-GJaKlDnJ^7y1WZ5?{-f;#83C#}?2C6{TLZ>ie; z&|>2)0Gm8vK2c1{=iBst9d%)U3J4PW{%}c^XyB4WA%HY@ibpmDbi@}nU{&m@&LF$> zFp6U$%CfHOQ7rQv8K?qCL*`tE5adDi)0Y$R4qTesQ)ushSx?0a?i!zP!F|y_jsb=E zmQ}_G0A?Q==DMCq8lTR2qy=SaVf)asRdb?c3 z&%|`^o>mg)s5ITObp~hD2YkR1%6=X3KIRuqS8i$d(UJ*es>!YDwNSru>P`Y2HGgns zI=aJJ0-#DS`|*XO+~g@W%)kl7COz%pv4FlU*o%7Vnmgjt9Lf;1kY#& zPROiixNLAAUfOqfpk(OWp7pZS`@yW?tOAstBc;-)56Xcz;NWvU>_qIvd8w8ro@-`} zntP80`PL*&h?Od(O0CBeb0AS$|G4Q;|4`m^+|l$C5MZ#wSPh9xRd?B==XOVa2T;d_ zpdd7j8{&(P%c{_jV4B`5X7)p2UumCo%o>BQEF7%pfVk>Z5H#ITIRIQU%ch^oXn*5~ zB)os&q3`H~7FVoFbU^7JMuup!@hQKPgaLkl%hbjpsDND4a;-!{KsdY|gDCZwu$bK* z>H#Jg$oWBM7p)5_q7i-_5eBwEsMCk@lOk^qZTiYKc`5#M6nv8V`_&&cTgNqvA{y}ZA;B9@C%w#r2BX|!5ctb#MB+o+{|ya+DbH9EExC2r#1~T zmh)KQvBEsJvjbZPQa6;s4KZ)D^xeJp2|l-L$2-(6Jp>fN-3*+-#HcWRJsl!Z5~>N* z*3++mP?G>8^>Cjxjtio1&^?LU8Vna&ppU`Tvw@Dr1j%+mU{h5?z~gDhee_dpPVQrV z4qE5h4aL>v&FC8a#-`O2`v z4y7G-y4$m?2gpEV0Ua|6^p0Zm`*VM2;$r2;j~5e+r4xR!try1p&K$9~4mU@z?Us*k zr^p4MY}8>nDi0jW7`ww%XZKfkOOJDK?2h#ekDeG7l5V9*Uh?HDlARMl)!CBQy@9xO zi5O#z&mIXt@|Spm_aju;Zyb`|Bn!6>IAyVroKmf+e{s3}R^J$I8jZ{j4K@aej%4^In1F22$PcjM(5m%cNd2!3ioOZH;0s_2B zN-OR0PUsj&iqr=S(9y`+X5QXv1%CgUtO*lGy(JqnGV@WL`V^MMyyu+yiW!XEb$n{p zWl0aHqx8ai0#o*c&u_k$WZ|tJ$bn{hWdJ3SA~C<0lP14C^`4xo)~z-;&D9;QeQ=5V3)YCptCe9SC)8E3xErHVY2JX^zv2y^>^BzDptF%q3XqJw4^!^9&EWgXllE35=b%|M9@&k+uf6rMzIf~k80)G@voHWoIhtd~o!5suh*L*Jw zB70mX7DBt1*=60?(|m6s!Y55m9&PuY(s`+GnDUP*)fuAT%Uo;pxt4+)pXZqMn@`t* zwax99<2oL^urdcCC7f21*RxIrQ&kr4jrfmyD%HGcS_vR;?_VZ6(m3hfd>+iypyLYB1 z2jg*Ml!>qd!wAj}ODVA6{nrjgmmS6MsNRbk4qm}$Xjgmy&O<90@<8{og-JIWd>a(UC}iC&Oh~eeKs(8y@Wa)+yA(e~`nN2i38gO@ z2kz(q?~%uG_t7os@wk0XT`&OPCvkvMmUHryMqg|V5`gAUP-JfZ{bzp}GPd#bjxLg| zSSnESNuK=2vf$mEXtO~TvhmDVtKXeozHqR`ok0>ijZ0#8n%0|DNA^WU)z#EQUNAci;I!PCld#aivE8K?Yva|ZFe1R|d+!}OuUx)ytv zvVWx!nm1(cSVjD|~ADn6h3QN2H1km8hMA9h4*MiVf}P9^i|SNrC=aLbng3eutoW z@o5i62=f^`U;X@NRMPXcG8^ixss7RlFbYRYfrclzU|t$$jW2~qu2b^JClAJtF8q=& zjd>_$!O0aqidlzV{y^cbz#i-fVlSi!`(pdwZ;(kY&xm`lg$(Q93~gpbaE?#ZY=BzxXtccSqy9 zkGD8t5`k#Yd*tQx2i~#eKg;xdtOY1tJX1@BQ6p^2c$P+;$Woa|^K5~Y9_RHa6z9lY zKmdaA-DLn+oxN~PrEe6DMFg4ChG;xz@#?hR2!7!*PH8pq5T3h~tIOT@jDP?YU;-RaQmR5lDFbit5*QA_VCiC*QJ$!dzRW}qQdR?8; zk7OIkRoinro7@Yp6?rc$Nz3zG?#EkDaQUQQ*+{oG14-0!B9=SzXb|P%o#m-H(>@8L z``UHq)nWs`wQlH{5juE?^^c!&X()%u7$bN zBYCTOFm)KXcD@Pyd2wOsOh+hiJ`UK~WSrX@PxhKr$3SKDV#`%wrf2V+4L? z{ieL%cKQ3yn`0Cz#8`3qYc3b{`lo;+EL0Wa)60*0#sa7!#q4$I);u<}DX0klqAmwO z383biCm|rnHDB5ElbOpSl6xZ8N0S7zqaJSd& zniXILH4n{e-+l&Lbb{aL@|O+y{kvjSZ>3%4R>@<|u(C zVh_GIz+tAFn^E$E(el5s^{koULLISn&+UaV2@$Y>#=oVfdtMdW%r1P@IL&pFdWyGF z106qx8?*@&jbCCSj^zKPy5V55`mD>rBpEf_`(tmimkLn~aXjbn4%f!RIG}VY*DlpM zVmr11<26F<2EtsTWau#}uih4+RHE8~Wt1xdIqjlMI}_)*YSIw#8r*|OwuTiX|hzh&Z)Q~x8$r2+!3!7_4?D81+_}J*E zeYD@PABW5fML~b@g>O! zcDoScwPo);p1G7OHod_FIFdew>q&xV+{3l5cIk<5t`ze*eEZcoF23iEXqYuM7a4zH z?9}qS+YU8g6Qkx>Q`Ar3gV8=Nn#J}q(zwa)tv3h&*vMff57?MhNp{)$q=W$M(HCVp z`sD$2Zx@?yGXzR=2zFL|vLeL7~bS;0J zfCq(w{C-GPt%taeo;>=GvbeCBW>!Z+RwX1FRv+3Ai6AbDrDf#S41n(qeBth=9BzGE z!DpGrtGpdjo(^`9&mtCkc6QV+;B3E`yZ0Hd-v?)%Cq6NERuT~!>eW3#U$-(huCr9{ z9&cRcvNR6rm?JM2pP0RT>FOps8b0oOT;|k0yn}Z?z$68*KC3_#gn=2as{=iz&wf7d zUGSEcZB_fJfkDDx@ikr)F$uC`uouVcW+idXz+r{>>!rhl$pm~s@X!o>W-MD>c(1Bm zWxLZ*GxYC2&yvqL=X71@-oP%tbu1iAFQi=Lbqw3bRj)iQEr-Ms`f3rcuHnW(5@Ct< z5T%{=PoH(-wI!oL$MkYjn*%3yC}~x;-V1#H0t}EG$u{C8Ny^6~F#z3NXvzq&<2hST ztN2YyqznTfTv(~{&Fxiq|H%09W}g@Qb|i+{sro##Z{#+0#63F}k~-tRYo#~irS7}2 zW>!b{AqwYiYD$pWj}EvqZ@^#KX#sOjd2V9K837=l2b)kF+Xg@;;LiALRFsJohUacv z!NRR84=VxaB#yRQzA=!%3OB2Q4Xl{Gw;SM6<+{j3lo*vK-vC!RChKw}He9;{)@fu& z2WEEpT#>8GA#uS4_kv7qfCug$)?SOQEC;6BD9URuvlX{MX)X@G2-gbO?)cO)swh=2 zGeEBjGIUGQa-5Jc)t~#|{p`5#61XYn{}FYTO>IVN+YVkr2Z|SWXp6f`TU=|n7PsOq z3Dj`6Vu9lBZlO>-SaElk-~j^3o4wyX^UUN!e!!Z0t?Rf>u^dW5J6v#-m8J`}XFAwG z|A6`sq}j`|y~WGjd1345umi?5hXB7R%$*6&> zt=%(+U|C?D5rhCA9H3GTbJ=bNtXLr<=afL}buXTJM1huousLf6c8mo(q%~(k9mY342UfBObRsS_#ctZG{?r(W)lz%$fm;?CT zR!3#3ifHesccMWUkF4kp3Z)xb)ylaVZ$9J8YF0PrUgs=Vh zPht~h_bjWfl)UQ0<&bY62fQz-eI=t}#3usbu&X-K#=*wJ%^BK<_6sv>=m%M=WodyE zp_46*fkcQ3Q9ZQZ+pF<%+sRN_#sS5E7>X$-qkW4ALqmO?wQi$1pwc)SEYj+7Pv7{r zcoiI)u2h!T2@>@j5uBKhgc1F!aHQ%K;D6!i{Sh zn3ykMsn=!TBtW2(<&OV3>FXH$1gL!*ArI&Sffw>1SS;1U~D|Ls>u$XiX7)_iZo0Ip3Sx zUZUP6L@cZr=M07K1^^r@2)-Am*k>#s(R~%6go#U%12+q5R0yqvoO)6V%xwb2{^Xhp zCCgPMduo+EhmPSggMExnW^~hrhog?K71KLqAvz80P^d$3#c>1{<2emVs+oM0j3!BJHW@n1$<&qPE#p+X9G)#3r9$3c$Wf$S z3%;xqB2-KKsk&?O2ow>)lpA&{Kdfm~|CUH%u4qVC=2zdpV)#&)@k+z*r?T&>%VXE} zM!B}DoB}KBT64V}m%gl9C*1LUv%;%^F5@u+l$2%l5k)9E5bym^t>ZSUXyCZB-kSjE z&h>Zmq^92>gRZ4|^BPm^009kIFW;Q}TTq$h(_`+JSWlV8)(oT zVQCDh{P}KP|8-o}<>;JhyIPwMII)kM+`tv7+g5p3#dFFdaiKjfJea&gj5 zGOl7}**{A7)ig{w_I=WlM8?UAhI8=>yWDrz$9_Sg8S}lrXQG~5f>4kWfgYmTmF zlt6qe3X-Ob_LUtHfC8)L)#vEgvCJc_`NR^-9EGWv$v-yma;&ni6*NHumIpqZ7iqPv z(NmBa@TIX<)zy6?=+4!vP_EwW z{~Y2pL!>t+vW6_jO`>U+{;a=e;?9{DjBF8hPYu?K4EheeLIIf{0m;-?myrT(5Y-ep z#8HmoIIUHcw4CdfPHl$oZO%a{{%1i!dvleyRfIz;lYd|&7XuTxNrdiBWOrOb9Qp%x z!uL-;*WWhZ!>_K8bm>+opJ}tMhq+Y9eu%xPFU;K8Vgs)^PL?8+U#^WS5c2$X{5HE& zRM0xSbYA9n#^MSSg}O&*!I1>IQRfC)|q$+EkVeIbjl|aP0YQa znkw}8ezq^YOJKdJ;Drd*T)?)Doto2;Uo5^6Ra3`5cjixq?l04)&1Qi2llIq;@T)FE z0w*#8nk4`8Bhcsc$Vly?0UI_A=8SzqgRRH9%ZyjbT8@Ltq#;i7T~OYN<}Pi)o*7%` zbIXB=s`S^_SI#=d)$`H&T_slcMcXk?9{5Ov0R~d#M}|*+LHw#T)2D!vH1lkp+>H*g zN!M*savF3qkpX6ZTi1%SijV&XG`{>F(D;M_8fCR=mCyf&GBA=2Ojakxeu61G1^!3A zao@DUL+51kgLGl8;Rca!R$*D!E7eCnBm5Bz^-{k}H;0JI%j$y~&p_~xs%cQj1`|~N z7zb4@`$I72KGClBzIxH`V((_a?-zalXO1Zb`5l@!dxVLTpizP4j6nqfZQfdFOJ^YxbF0ul_+1*d8X(6%i+H%_Oo$s zl9*&&7(lmvSo_tPJyOb69K@Rbt=&g(z!d&Ea%#FtTJ4`2D-Pf<&@xR&Ao$4PQzaH{ zjDyrOD7>wR%R1QfN6&4Z8!#jHdw;?bOulVsEGqPgGR-5DSA^%Icv_c`9JST22xx2~ z3pQT&N#BQrr;?KT($4@WlUf-sr9+O>#La zmG#a(N}TDL4$Q#sssK@~Q(b%+q$q@dT{#sce{g96{m#%x6@O*+7eukMUe56_y+_63 ztKF~`ID}mC)E}V)QJ8s)$_xf?YK_@^jPYPHLuvRr-eVM2_5u1w{(f%e0*~jw_Usxu zowrR@3#I65(Fp0%UAYf&LC_mg)GP}TlEb4`vp9x(TsM>VZz6Xm+gC<@RD!8;TnAJS zW!8qj4=hJSg3gB&Ix+%h1)Wm6)YFyI(^nAuyZjzegn(54?IeX<_MA`tNj4EXGK~K` zm*5Ls5+znTtCc!%FKN1R$EQvyVE#F@1dpuYb=c!;7JI_H)UAY9qu{lHIg~BK2 z>Osd1X3TSUr|DmK(K!IX0DkNY--}fOdKeXG@L_}b?*h)4b4*A4r494D+{ef_5j+Zj z8f{|sGb^7Zz+x-G56t{)2G~sQR#L-`-qJS);D=!47FPnwr~qJ`vn`WWb{>q+pzC?` z^>D>g7ha$eMaoc0pIk}nXHaE8rQ!XXLWeKh5_=z2KM=gkKH;r9<;t!=MQV@qe!I2C zdKU5dl}d2Da;2k#feKJa+RCFu?sDKY(wHTzQQwQ;1Sk+|b1n~nJ`voiEnmIkztk=6hT~Kj?_(J&VvJDfj0+rUUZ!GixOp&s_)d> zJmVxZ8MvtaWkzNtM*L-(i@_pvei=VT9Vr5Tt-)B#dR~)V%ghb(3 zKmq~tA^HfwyBYWF@3g52fbO8jN{Dm#kt{hx2qZ^|%sH#1dweW0f9HZ!e^}NJl0G@1 zh$=%_Q3&z1vwf<3OFyh&c^C1f1%4sEpkZ#zNx@m`y1@tNc7s8qzqoAaY_e6SG4x$8+~dpEw(cn(KWGwNkbTM6LMBUp)Hy2XlLi*+LZ!?_liHVoCL!nZ-b+lNjeG#&n9BpZ?(!un^D zJ4w~+=@e?Kmuu&14)D7lwJZIgrH_8xkjgw#xOm-d_)0~DY7t#qyX8e;ThS%JK1O?W zh{3eXI||LI<+^G)D5ErtQ}dp@3;vE+P^_D{h3EY<{ctvt$nj70?tTbt#Q2LVP1l#a zC%;N>U?)QU!P=ZdmZdRs!vO&V@18IUT5)0sS#jB2HrYBLZsrP)8B319>!LuF-3a~- z_G%&>N3U&QdC*@ijRm9G4mK8Z5#CS0Fb^1&*lhmZ2>j^nm!Rf)ZNA=v+y=VpWPdJz# zO?eNDo$r$rlMhv_oeZu7ZMtmHQZE=7MreLPt8rA6j+u3aC6P_WL3U1GHz60Kj-vK? z6>y0;7A1psRWuEL-K}XEOlGNW;ckhFo?(|wwuxY>23jG$`~ZvY4;3Vz3al7Es{h;B zK27Jh=5O=OMQ6!ETfFQ_A|_xDQg4ESHJ7;I0|gzcts@y@!8#~T?~^fV9vY-ZM5;+n zt>vw6ddmhG3O{u9^d9ZS9MMp=7YT zNR}~gU)u{cKYtflJ%Ns|2%bdKM~C4~^UL&vX=AM!T(qO=Gr(z}o?oY>x$?#?Gw^^( zVcrW;xN!%jDOj!Bm2CAFO&9)vqWXQw{$!i>%6O9ihb)P|({2xpnC$(doDqLHmp}E8 zRD}Ej{mxo%cRy;RVAk&svN7jiS!$dTxyq12 zf84FX>65tAJoZbE(WO?KL=@=12Y6gOb_tofn^~rz!<#?HcB2BQs+2?!B^mL^oVfVa;7~NdmRrx|NLe`>5A6j>@!IO@$@L3HX9%bKx)2 zkvTcKL@S{-MaJm1#T@?qh~<=eshPzS1ceQg^9gby`NF*#s$b>n1HAo~;a=vUG95E! z)qqghSk^+9-5VsrKzkhzY@NFK(xQYMcN2sbR;@xR+IIwq`0F9FA)uUlMMnihJTB{Q zI&{}|#TCNeZAAU6`o@4C0tvUs+galE8hd!d$u}^MKY5*q z$qws4VGRkVGa18NpgU8@dF*Sgrn5tRnf7+cq#-OFo`cc>&Loef`!vb3P2HQv7G*h~ zn>mN#Jt^KzL^YoC@2RFCz+Hn1ZBi%>nx=Lll86wJi^Ao{zD zy>A}qJl}0Y3kYBYIA&~8g=p)>wS%fkC){lB>FxWFglV{t<`YaN}&Ey^Key zDO#^i=BtTqZIt=X%8v|2mk|0IS9{Ay2-i{IHtJrK{By%bPW^qPG{T7LnUo!C;2WF; zBRV-)k+0tl`!=0d^7WWu{P~Y#B`*G2U8*`;__)rVr>%cfFJtHrqkuF%*1K=?mez4hzP5= zD0#St>!fc7|2jRYBP{&5t_Rdxlr$7rz97VX%b}pa`~7047N zwWTTkB4xWWh2h`zQL}&Fis$@E6!WXy+KSlk(2pJffDo5dZ!B7FU}BnV*T-?3aql}J ztD#vKVpgf()9Af3I5#ne6|Y%10ji1#u* z9;{zg8WHGb2KRl&?6Y)IrW@Nyo18FAe0AXKnAPm?fg{xmpu1YUqTWaq{LZBP~@p9$Y9Bei?=b5N-}BP9dt65U3%-{J$C zpItUBBv@Am@BMw0t49kNU1YUaY~T>qp!iWIU-C9$U0191a#$A7Nxoi8+4K=tL{E3O z>gj$+hmt@0y)a8gJU>j0kIwIFmwky!;4*gMF&N7G60-NnAXIB=^+)+ zFCjj9V*t#gbGtir%4`)~KXz*)$Q}4hgDH+M`Q`AU2GA$t-JV>&;60#;$?5G8)Qont z+J`b=bnCibP>*V6oJ`9%8kW~y~2_RT7oJE?7^#KbN9 zK21)VBoi?T zS!rS9^1*v3wAwMOXkgaBslc*8D_hP`e3*e|nRV@6#wSU!OYVB9Tr#jSQ+l??#_*yi zttKDxKWY*4f7C)3LoF2JWEY?R$8>^$6&L{q@qhnN|F{2?1nn@M-m&EWvt8TKzN@6j z3|dJQeJ$?Ov}qY#n|qjO~nwGc}(-1c;Hv#xnRw2-A;-L z;|b3!2ILXYAu8u{lFo{*$w{Xq+FskLjSXnw%zkvlsRLTC4jcDMRtVm??^iuPzRfH9 z0(bzH6$b|y7oWl8$)?HG1eygqf5qG4n8wQNztlVBg~iLB(Q;1CSG%liD=^!I&uz>5 zyM7I~=N#`cf8CoCy8IB24-bxyJ^q*?W^=7EsS6~c>tlOA7&UVem>JkO3kp8|USI^$ zO&j%nVMC^W55U|v&UE+jP0*l7#ZiG`VuRtvjIad~C_9txC3iAcUN{9HV53?3Pm1g{ znh;i+9$&9dKudg^dxotoFAb3FaibORMPS$9B*PtX+@{t0NZBw=sANje3&HP#Z++Hl z^I%ben}#mh()IcqZMFWM@3*yI`q8~JhKd`w4q1k0F@}BE0mJgJLiE#3O&*k3FRrvP zCGyjst~}Hq_W(kcCw?QBXslv~YDZ#T?5Td)UG{mO$Nb7009LwT!{U~2dt=rdyV!n` z_^d#lp>waMf6ES9W$c@j+~(16Up0}HBtrM3xrpIDQKks7erbp3Bj)hAd38MoVe`EX zvQZ-W`ly+hzlQ|-f_;1l&<2^uciM>duoieT|0tXfsjIX$Fv|9~KJhN4?MB-a`A1QX zsL4Y3RMw#@?U`1ode6#xKE!N7Ov+T))$B7+ln_%dkfb>&&iTuy zT4NS`racuq9g$%K^*~+&fgk5szNamS(aLM~{%J8bN3W`{1d`*;ypdi8Lv8h@Pkq zkm)a`Yt#Ovqs>~JY;!^{P4}8be`+olXdDF)h?|)*(9PD4#K;7TMolH}hw1fpmHZvF zwh@~i!S{cm-x=L#HZnL#;<%!E7F3%LjY4MTZ3_O*@ex$c`%4dw=!+@dD8ZXHG@|)b6 zt`qkzf$EtYOYzgMJe-qonHpe=%_bb|?H8$+@brKB)Jr0$AzCPP~+O=tZ|)=ArRb2W5erDN z4H;?6_@_tGRc5-A8t^v4SLXlk%rfYj{-21Wl)YiV~*tYFZ`n1@blH08F6vu`o9%>}LQE?F)-JU+8{FVv* zP>>VNi>7>ykH~smqtPoJ`vH7ym%H9|>HXy-bs1#}1j7#uAzwiSOU)(! z8$(+NVKR9|rB^#05MY4=+s|<-Q1p7MxnBl0kBfDC=B_yGA~8eLapZ6l@V;Mt5;Wk( zN_s@&N?g!HaR0n&6FRv3vGP5kMj)3X;Zp+SK>N^dY1TxUSli1S=h@fI!&P6ha<7Cg z)omYNs*@lSSzmx>pX_&uTaVCk0Y&@>Ux>NDdx#Z&kY_q_$q6ph#&fsB+WN!)lx?It zh0i-_OnrK@F))Sbq%?3+gVu>1($So8xmss}HPw zm+uRhRz(^64E10+$2{+y#A24>&N(l7O%$SH%yXT|w#z{Ms_kedTVF!tY_D*yud$J; z<2-+Vev#;h$H=~uIrY7Rfwj~EPEy7j;p&!NR;Gp;mr?Z^WswnA*9np5i~G*Ks-qTY zs}Ny_&EY25U@pWF_nM_w-I8e9b)Gxb|8Mh$%MKm^ANq>tf`g)D$L5O-(39EhB$xP&eX53NyE7w@jc2GHdS=@50}n+4$5ufct?)qk+z z0CH;)7guSTJXDsC2rW)7(g|b{PxkrFa*Ev>HXTwQ#)E z{5?)r_hvQ;-gP}K>f}9s$e~MFy$`z$mNdFa7~l(p417N>@I|Wk?% z3%BPxOMMSLDt_+LbX7L86GQg35@D}s{&)9L#qTCNuAiGrqp4{%pB0`orq9l9ECT1< z|L!w$l{!vIqPQzh*I^jei4uPjSWg(SE(6yZZ@wel$p8(>HwtpOq;r@3Hj;F{M(c?q zmbc%gf`j=DRx*XV;43(A(O-~l;-JFTfD(QoT+4a+U&;QCC%&~V=L>SHX)%tY+ZC(} zw|Zq)B&)?bW{6rvr}Vi8yW#ZFMD~|lXLH>yz~6n-D+35NcgkTRKv3#aIRg4Kq3u6e zVXlc8Rli3Ap$oh}f^uuX85U5>+oRWt-+-d27c0`;luEK#LDzj3e<32solRuFp;NW&0!4>MX=D90kgt=UAho3^?O&q)LZy|k zAV+hTmx_<#0@zAb>g1>ICVy-&0va2Git~daUt&b$H0UWD!c+7J!@q?_=K7n(rMX54 z?~JeVV(;bJa71Z*5?E+PHqd|OV7;#$12rn5s{2Nz+^IZ2)hexBfDbn1{?zj_6_?(O z>^*!;85$oQi31~+*F5G^rr`#OkePxKJPqK|gZ|doC-W*Y^wS-)lq5Qi>mch(P0t{= ziWb@VgJQsx*x|6V&@ZVG?~HrdqfwV za23}2z3F3yzmT^c$9b!#dESX%Y?a#}h$9f<~-W2?n zSvxd;JZHie`Z?Dj9IeDCf!pKTP;p!x1OuU%NOUST=Wf*&Rlo<1Q@l=+GEGp1{D-;izIm)Z^)bLAw z`ed*?SxoBOFA~h>=^Dbyb2#=mzPwKnVtzW7C27u}90ohL0^zc%^5(CbGt&Lj`*7@? z{zP2@nk4*bw7E1mKvLwLf+5rEA52$T`MsWn(|sjaQ=14Hveb zn)V#7s91U+XVZ0NUVPJCZGom2Gzb7-5K1`$wh|9Jymotbclh%_v&?+_&=uEMlqGNt&xYIouV3yxsig1aq*37` ziP9w)El;~DmvH{RwG(hdo`Icxalhtvxg>3_Xy<~upVH;uW}lWY?_?Z~R#U4mP)1#Z zKgx}sm30nZ+0C59RN+o1$>9!2=>wBn2bw)~s3)XF*9NzKc07^_oN#7w$cUBhxiBNm zfxb;Wf_9LY@Ww;NsH8Zq+TZM}H=#<;dmME5l>pCpUf7x>V~_BxV*^(4HNB$z`Y`L7M6Q_FX`$3R5rRIvdlIz+-1>!1Nb^o%w9) z!}F~aJJJbIXibxO*HOvIZ4KkI60H_{$cPqo_=Qk}(-(#K6Pbsj&xq}>Z7zRrl$wnv zSdB+D3}3(hb6!BwirXzQmo$Hd>`(|oP`Dy}?s}u~Njeg{zR5qBhauG!6rWzaU3cC0FO!aK)c-9`#NieO*4xgl zvusRn9GHo+$)KaM5q*HqNQ)#M|1z-a`Y1k_BuQ>{pJ}XVhq`wh8j?rP=w2YDi`_prnViB#AejtmiJ2A0!?bC zwYlrr^VH%34?CZ+c6ox)0n@WyUncgXGBMV5ZwkpA)xRI0fdxBHZ^bj8#R`WO(A-12 z_y^~1rK23n61GY@x3?zg4)lQ`@HQsQUWEQHZJ^+u16zXwNz1;Z%-@HN+(G}o%MULU zRq);guJ;b%%gbOZ1ZPVHN9m;e1P1gQF4Kl+T*u(oxc$Kb2=D@?WW1Z<|5D#sVJz;> zET1l2W8OwQVH(Xf+)d45PZH&SftZs=!s?xi3R@gxyTn7DzZ>>$F&Cr0mECERK;<{d zlhxzBC409U?AwHJvs=%FRt=TF48uC6{iM+mvrUGT9N|_f9*>+29)is=3{A!P?kjC0 zMWc_NjYe;Oc&<*z9pK>QfACNHh_oooFG|a%1F$z(*$WL_lYq}Ro!Zhr*S;9*f?_5G*?9f@~6i42$pBZ@6jy*!$JG zav^PcvfJt=pLf=bly?JM*uE5QYISw=CB?d5IO2kOoG@DUE2k6Eh-Mk6J;WwWL<(%E8g+AD5jaS>Zweyi(P<9;~M1CV-+n4OXX9*)A+X= zR;m?{VpI8ReC>Fp9d%$_;Ud{O9y@z3fRO;Us~Qjy{9~};L~0#Y^y^!?j(A&OUyxkU z^>w2WhB`eMtl=o&E}l1c#y3g<%)0Sk5Gf!!utt-C7J#$zY$xhgRdxV#7u@47H{R+= z(FY<;K$mX_&OEqQ?kJ?dax10bRmahZ5os%7Mqu7v4lbZKy~VZPe8s^3?%ewaB|c6T z)$TCdoR0^vt?llk60dCc` z(i67@9wNR0n+{s)m|l#QXL6o~8sILs$-d&UQsd$_~!>HFy%- z&QzT-cq*>LaQH`$_TPErYlM!&uPp!02Iz8fmuMRc6UXe`(F&=&2hr4@PU-k87IL+H z6fM(1Nk)kCPxjqjr@{WBY9>U5=G!gQl->+4e1L0Ur?eyc1Q9rYIAXcxzi{5%td@KQ zj_+pvT0&7l6}p8)CIuvz0`)hl9SXF1#=4s~uu=FtJ5+(B$OHB_OAg)m1A|NR=EOo6 zPS*uum=jmP_P=f>H%SMdqGv*UfIay}slyry@|*&9nb=ReMejet0lGWGtzP;D>;Q$N z@b4Sd_D%`ub1l-cHuK&pyO8EpB)on+@c2wuWM$xJf3mKS%^4*|hT>N~S@SJl8Nckz z6vD6Q-K)N6>$#zPdAeRK#&OG+?@%uDZT=w_wo!g>*kZ@5$6nHk+DylalIDmHp^Py` zDsW_Q8J#w+o*GL?I`hW82gBt(pGwam4OZo?n+`^iT4J{h*U#r{I(7ItlIP|~K(0se zersgv>Rh31^FIWQ8Z4fz=7Sraek3w=+>37BJ>%?rWfF{r@jw@Q=kk0^xAICVcZLpI z5w0S9n^L3B8@-%NGgE)JbW{iD(04M+nRoY@*9c<#)8*XAtm?zDm1mw;;Kxj>-SpE3 zDKQUjzEw4d>~cz^*HMQ9Q&MrC_&rG3o%oN*7TkLkfmfg6@C zs`!Q+r<^N4Nl(ANHb%sK^GmJF19gBeu|xVdcI*F~y?jBY+TO!KlvTYjRE%i);q4?4(j} zEKg*BiJAR3<&NMLq2HKZ_2c$#QNxrqs&$j60qB6m;|j55_3STLS0?zv05HKXv5?mG z415I~HxOCcFI7PIlBw5jJpv;gawsoP;qtB(pxJwb?yk0*Tov|-hb{0?()MCmd_1o8 zj=kyk6nz`OpIP6>k7fOQG8?}4I_4{wB%r;4nR#iW&wQolw$h(=XfW;e-`gjisg31Z zWO(r+_=wtUXzy ztr`j|ImnXn;PS_&PS?4F7IV!bjt9XkNJ6jgq0Jp!@PtpaWJ^H>)YSz-xn8@H^S_6q zm3^uulO{IqhQq*Fq}Al1S7P8`IiqV|EXvIhm6MEIn&V6N*QsJ! zkY(9&+8qpdI3s>AjTb4~e-?Nsl}CNb_;G}xr^nGpew*ZXnDy66%+11F1a=Z^c?$I= zu|*sgZyoDwbx2F4dNx`x1$xhLCVSIt8Q!z zxH?KbVA(xn&i^$YLRdMO(|ET-5^G?OOxZf&_iPQtKf79ymi$9m2)DuCemQ}XX|(x@ zv-g$D0;l;D@D2|@1g{(68v=QFIkOX%p~y}M5J2i@1?B8DUyexB4ojxttlAj0k3-}d z{yKHI{yE_tmMS)wy4f=D6C{=eFONFUyw&^XzrEOynvwcARR%FC(h`gJJK}Z{(!WkZoC7~K z9C+&Q-Gi-ido0TvdgFBeX~KU|8vm@@Kr}<~jUNW|no}8H5b_XrL_HY~v5Zc^tdu`kpZ{G-^~ zfxWAe!m>ZBo_3M{1UBFt`co0vqzLuZcTJdt+Eujbwg&cgeHh0A-wZZreHtAPLU2Ee z!1a@i;WyjMP&iZbSR2g)|8_CvqA(t+G$)!MAm_-}U+e!Ai6Y4SOs%j&SaDgWI{YK_ zvl5z+%?iK_Y80C>IYQLRLk|7OB?IktM0m^DR^Xk(MK=B)SaNnjC)wN8`M2Kp=+YkY z=8AE|-EeDQS_`~mnf_2$>+_>$>NtA;(erNiV_>sP-?R%RPS_1N&U72-d-VpCHcwN4 zhSk@RT*_xjVVhIq_LQCGpXyFYh!I_@TQj;(&py;ic7$gJ)pRGfWeHdo4}H)_z2TMO*9=)qqpYy_RN)S)}Q;R2tZ^X3x#M}MTzU2div`QLCS1(>E(hGCBr?oEF%ey0Fj^U zcFaj3T=7x5Vyb{H{0gs#py)@h{DtLYd`-WYpmhH`B~CGDUiGCYFE$`xM5i>4&SX+2 z27i9*339f^%5s$niynYcUCA&3n9rQBlB*y^wWcMMm=X1P0l57zY|L{U^2+PB5BUN4 zg=P|MRM|9*zL9Nh&?fa(_&vY$?PHeFik_o(TRlrFbAERe-&Bw(+6f3yxHBvLvhpb+ zQqSzmMy{;h_V~?Qbx+ApKGCT+Jk&o1Uf4aS(c^n%IW)*6A@(!shplF7=*?C;?;B%f zl}MmXPu2cZJb;Vgl~6n7@bFkY8zpA1|BT^X`Jato6&>1?xeu_tooWUV6^+TyjM|kF zH>8I#K@2=TQYxZu%7s=P9pf6!S|EWzrQxzG%CrjyNAU3L&Y_Mqb>eetiuqvS&Yg~d zz{v=$uF;_yA>kQu+C1Y~b$T=>iEQF4&6+Dg3BvHwE zm6DDC&tavshcvE>NE5GGj!&hYIaVXD#9tZ6tzmcJJG({rg+J~v*IO53aT_NwZgwpX zHXQ4BFy;pmkz3@^p${p~UIzkleFRzM(>w~7GI3&od=^jz8o=@_K$_nGAQn=(2Pru* z!4F~Q!2;X^|G3ti(zPLGTXp$fzWUUaH@R(mlZ7_)%|f^Qi|_bOdEGPmYUZ6@49wd< zW-CgT@uAp;g_P5!ZDxyO^c_XB<9n=bkru+772TxwtN~62LH+QM2|RI0n}Hvn14y+m zBs&=2YJv7CD2n}0%ivgh_^cNaRS;Ht!8+S84Z{f)@7(z_p27%4{WXxVPt z!`S8*v5^2&%HO1c&CW%HMLS2^JupR6c$4nT`@&xNxzFQnAFxALi7?OD%x1YyZ z-ISuWCHC}Bc+1cR?x%;2nrQ?xNjGr@Z;m&($Cnil)dWg##Wk^|=$C7zWyfRJnU{?_ zL#Li!`@F0!l!&g><&v3=IMqbAd?P}eFKbN?wn?J8e826kO;sT?;M}eWc+i+h%@yGo zy24?xV`a!(C!S?FA?({H;q-{{uI}t&V`_dk0Nx(w37hLo`^<+>pb2K6rQb>PBHwag zuCIfKOf^K@+C-CRXoakWtL~`9={DTLR)Meg>1_9HCZ{DqK zP1eDjFG!UvvJuZL4Id2VYz=WnJfQDPeE9P{-1f!`;m&U>QT zh3c&mYcdOk?Q7!USebZcL~vD3uwK2A7GZyT(`ocXOaqTy!(dD94vuivwteMFrTNCd z=?ml$x;zrLq5%7G=JCUl$Fmo7E7mGHUKe*?H3K`byjzI!Z$18tw><8)mpO9v={WrM zhd7NOa-pIkfJ1)u{pql?TQbTRDd~TmQ{L_ zGE)6J`p!CGF#9pMd}&-f#3!k2GZ_WEcxcLc?;cK?QN4S_x@09 zP_43uS4`>JFf>2`dKOyfbB|ez5-blo3I|}uWL2@MD%_~zn@5ct?>DF)?#=OVXEW&`3 zRXPYXR5SQ%U&1Bt^LGt?JH)&@`~ma^O=W#C&e(%)C&K%yDV(Th&+%V`I%q&e$U_zx zb>h!k%*Io7e3#ffjZPcXj{1N6a53M`F|omN z?^f@m)p_gKXkn4uG?Rr2hi=+pq3vGtVeqgS}cuA{g9&O?ZwR@Jz; zO(La8&GvaIbj0T-4mmz{e(!&zYcGCbRsmT{TI-OQSNJ}`?CyhqN&XM)I(~fn>%Iqk zKV0@$9ODYQ>^opq8tISRES`I?-VF^_K^S$C&=$2ngbZadc5nQ6Di~VMg(ZXfBWI~> zYsLlT&(HgD`cp_RPY2-y;SxHN)JaUaeUppY@_rzhNLyX@zjArQ6<{{W5cuWij_`n4 z$K76#dB!5C(-Rvu0y*S?bb2&(6qDWN9lpW~w}Hsp_)WJ-wGc3Vu~0SDO9;ve)ir=w zpp;5u8DQXN*56OJyf&bP!FWy2?jJGVjI(lF5`_~FD4B#X4+p?ill)y2VO7gRHrD2a zqb4u45Os0rGBwRFexx(LNB|Q?<`?3>h=m{GICmnmGOeA7$*fj|s9rzr_EbHN@4824 zOLSQUJ3cg@^mCv33rDx+M{U4xezdL#A}<}zYbD+F-EPepBZ%v z%xTS_G^k za)yuDwm(&WHP&;@ZA&*~M4$XWqR#rQ>9BqOqh)Z22-2aXl1g_7(xK9gbfYv37)XgU zNOyO44y9W_Iz~5)9%F3#@;u+?I6gn^57>3w_x(Pv^L(9Cqdx57zsNWAW;)m}bB6W4 z?kM9YS@@flk5l3C15D>H8BHrP7cpO8o5?$qRk`tdl-<-c;Kl_-a&Y6y+%~H4S~{B_ z%m*Ulcjn(jz)@V3oY>ta5#U~EuFKM}P1fZ?4N!+? zPH?_YZ~llz5ejlq_|J&aj=JczqYH%wN|!2 zE26ii&y!LgN|y9zOYc}^f6j)|CGswx2*d3YBZ>^=HAxb7$C zCaatM$=`=gojD*aJ{4we6b*gte|f4nTt>b+B>naa{377OX0o8bRuJH&8DeE8&DTs=Flam#&yHY6Q=kt9je zt7Y*5ab^E3=5K1czrOErd8gagtu;eSY zQ?&Zo)=Pt<-*}mRLkI;f&NY#}d;#&(1L}1_O!@7a zl;?PS>6zNGP>xSdDC=H4)|IGV?f4PcRaCySoTIYD0(^|!V%R(XE3FpQYSJe^V7Q)} zrdhMN-w1klD1FG%SrE3q4T#+!B@Vk4HaK> zE$iKwxoIH$T&YJ&?bqDQwq5sXa|+oYMS^A53A0>(zF(bfQVZ9b;<2*ezZn_L7pKq4 ztCQz59@}rdo3i+AvW^Xt?S-Q_{snqs5(~Swt{A#ABSogYN^l}$3BzxhFPk?KDAyWJwSg*$a_A}zwtvfSL<^(t$KnU$7JWJQKG({9ljeJSL3MI_6ZO+ruD;~ z2(F_8|3xwqV|uPp;S($LBH_eX=9O%nE$rXjzm2tXy4qrE{t^1j?t3i$V+1dW#I$;? zk7D2HSnvYW4z<&q=kVpW;vprv%+h53=hz&Flu1U=h6Il|5pf6*823(>@nmyk*=wt~ ztTkGoHyBSo)0MRcxQ>6aOYR;8|H3ps_3xJR;@91ei&+JD(23sV>GnzGd-kCDDQGp# z`Xb3Av3Qu^Ylw|;O+Yx2K345-B4WTcThLN&N0OTXmWR%BEPxD$xXWbG1Lr$t7;J*B z_*O4CPiH)Dfx5-p(dO3|@{iLxl*tZQzzQ#9(Fz9VwCd27hk#fL3$N;^;JmMXoCfYC zgpZT>W%>xvUi_UHf9(KK@OO4V_Vn*J)=FUEM{b4bvc^{{*Efe;>!2f4$G9d=tGu&p z6@JW5%|y)F-L892I0LaF0;z4_7+J*Y-sMZy=>_AKT$=dy_SenQ2ksbYsVh6brlS3} z(M#{1l&a(-Ordjx(2^PL+hz4r-)3!Ls+?_0@$)Q7co&&;Px95aUd`mv_<)h{V(W>) z>pP&^p8zT`*9>5EotY$?CBg7DHX1A|GOF4RFcAm!z%^Gok086s*$k5|iZohrbeHhTsZ4oO}U01fxD(v6z{3~ zmr$<;J^`rXagcA}+qHl+#CyJ^WG)rrGg5PySUe$f0Y5|{KT1)dc zp2UlM1p-7m1puMVIA;HOQNEFx+Q#SUahL2YBC}P%23TDlT9hAa3R`IUPd5?!mdm_S zag|<`04?PRIW;Q`wkO}1GOG8-!!GaipDxrMJ0@OCHJc~X{6cklOCP(N05`-P%Si#x zQa%-~lLI!+3N%%m`(lqwfj{_yXxn!( z%gMN@XOsRCQO|A|C{Z{&MV&t+RUC-ao4B4Uy06|HTACXdn`0ev@DOgQT-iaDvQm(R zvoC4usun49^BfOtoc^r;YtUJ%!b2w?J$RhuFKMN7NS*X{Up#Zq`!~-!Q+@}e@0~Tl z!&K@1_1nu`&%Jr+nZhY>mrZ}*!=R+PzS$SCv(o0QcIFI0m}HEJn!6+MT4S-lHG?=8 zSSER8b0d0C4+tue!g#aGQcZe4A~0 zPw|j3pPk^&llK6B1n)C;yg8ESCHq@|qY)txu#V^C^Miie-{G}WAkL)4>m8fDKKWTL zA4r3tI7U~p?g?4b-5vQ|y~ZQ_+1t&PmPokC08Q%%=uLMGGLUa2&fEWQUvmy+(9zL1 z51oNWZ)b^D-Q85TYqXKI)$5`CpHR4S63T@4X4#Cg`d+1WIbSVtVCU0^T1ZokCcOvtBdT=NCY zbP_~Q{3*1+G>kfx6Q`ZudXMPz&iPDQ zW%3Rz-O?p}O%F5E7!5=G!<72Iy3PNex^en{>W2QKy3rHd{+;Sk$aq9vU>+?QkLm`^ ze^D5ZoKJd;^Ny1He$ML3jZqjsiMZvzCJX1Dq!*Y5V<-3ip%rBNDxQ@gdBQK|zUjc)K z)zN`h#h{kl2~J-V&ufoqDypiowfe1_M0&|-C%22SImz`M@lHbR&<^(Lm#sO!mt&l_ zYwodzn^gB)-sEU7-}C#fE-6aoM)aOf zz4XnSg@7EvsNo}#7rOaiKaRx$uc#ssDD<|tz((51Y)UEKPtM9RB&Q5p;UqA- zKn!L?%s25fTbZ=PuHNG+G10=wzq6xJ#XlYSfCZ0c)akLLkzjaXna5?+DSPU+(*5e~iH>W3G2HRc9i}a({Jg|>>Y7;KlKax6q~}4L{WDmNT|lcMcR;FN zRB>!=iY@KJ5aA>y6cR>a^iinaUBdbDWu8rF5QJ}<2!AqE`}m}t8Br0&lCGNqlrqOz z$Isf;-%%g+Up!zl&&5)eP~d%+>taPQzCY`~+vy~P1qfn9a&rV>oxndvZeah=RHQ#4 z=*2q6-YZ8{$YOO2YUtU0O-PHx1w4RONQ^M$$+s0ozRx>x&G)lOU(0LnV7?^TefU&~ zb;{kPsOwTm@?03_Swd?ZPv1d?16(Zo1^3=qq3Pv(`5sWO zzeR7{nQ>-5=xt`z?Q)^}3t6ZG)|hdry-tY6XX>Z1ryKlw5qi?vh99bRnrJ7#AK^{P z^C;7YWRG%szdjA{f0)^{nebI}7vIfHOX2+U@$tT^4H!ICqh*}L%sGDOSnsb{qB1Q1)RWL7Uh!n@8S~NG@}(_! zv-rJIa@IMTF<#od&&A`NrPBV_L5(=ztQXrVhanVPjKsLL6h8}^|Oa#(K zNECl%x6I88IxNCTE%vT=-85o;@T+v&6O7=L(@jX4_7j#!)@O{Z>janwSj$DLZ{Bwc zox&e$Gjy)m^TDC&V};e-OAnxT(3h1M3({!(CAGp^kiiwS`a{&k!_g-gtj7p>t6&cF zn3{f_gdw|Yz{9+jd-3BWG3z{Sb1fz7e(L|#j40^c zVr%&@_6$=)ZWzj{sv`GmVb$5eHP;> zo|#xp+e50FEz%~$pO}!)eZtLE#uBFWfzwZ&?AgO^R!9Js`(g!dW_}Rj&gAemY zTW_jHpBeDRk9TCuf%os(O1uw!-=KK^o~$%m`D`&Jof$P>Xghkn4L-1KD%pBNTM&u{CmvR3ZVmNbhSPbVn1S?A6YwB#r=a+tyn>Y{v3BJms-~vuqn>bQlorAFG?q11xn_&-`yi#V;t*0$#UxAJcRFnX*m|2JP2X6j5;sPiq_1NNNqQtZNx-S9E7hJc|KeS5ZA!R1$B2G5 zHOzub7#$TpyZjVA^`?rBk4{%!3lZl)oJfGWr{XMcj5P*k{2-n?1s4XAEbGZ~sGH3r zmpcOPI^l)@2dbmzyGL{1dqjLMm?}=nhR;b#?cBeXG1LaA(J89QLk`bo!~J*W>MsS! zP@%l^uPBF+5NW1c*#;XE$!jXZiwm>%b+~7Q#~)MKzeWz`WVtLrw{7417yJjKS|mG; zv2dW@Jm*=btDYjC>i~B_?R?~hWI_i02glld)>bK$p0Iv|wR!i3L2k~x8vSt4{79kg zL@Q|evcXTpO7g^<6g4}Sy&TV9jz;Yy{iL6qrUP2rrS+X~UmDfqJ7@?yenT(u*z?8e z^yjnr=(XTuY$gQCy4Q_i%vUb6c#CG&NjX8kEq6&+WcmQ<#x+3yM+`ka-Ok5>-+vJH ziT*Ns0_L#&{E$#YuDFu!S}hv{RRwi_hxHN0>%T%{{0(Gcn}%!=&M@=sTFQK1h7MLUd3WOKVHwmeU{w&S4)~bC;?XG}`k?y=PVjOY}$fmeHRpcNf)x_hU zs-$BG{O2^qaXLAm!kfofSL%x_@_LbUg@Snx((R`f>I~_?dVY}dvd0?j(#5c7uH5(# z-J0Y83sY`rXD(n5qqC&H8*Sg|K|!f42H`c052bz6KUa)TUo+joeEhdyK$IaEENq7!R<%UjIwktnP;K_DR8brL-GU zElggQrYKq%-t&Q3xKqp@F)@B}h>(4Wy3*v%vPo#nU8wPL>k1f1jM2}P#wuR8Aa!I5 zKW?{VS^x@2iBU2^{QM1yO%}1Zd4^}YUPew&$nm^Q4DfHk31_z1C6+enzUx1Fgj2$S z`Z_+Ey{x%kYE`V}rDdirLR!rS;5)$1bSxU{>i+sEj-ZZe6|78dz*BgE(w&i~H6H_k z@!DU{`WA>&Xxc(h2sJYg`B^C?=PlbkiJ6(V%y-38dgL7rM<2 zr8ftp2?M}xE_fRcRe)uk2JEslrRRW}4{+X94~K@CB}!Ty+c8FI(C zwRC-u=LOmMA6WA~#;S3;50Wu$OlBzyBsV9Rjta{Zg>>`*f|QO%@ymKflOdCEA^O<) zP8>aQAKqHp0OPo;e_mOD4Cm;!dGF2^yiH0V_lx1654gmKAvft1K;ZA8Ai6LQv#3-& z85)16*~zeF5?mt|-qgb@4T?DaeI_;BrsK@g70}e8p)7_tAc*>4C_QkL6S$u~gn|pB zuaJI^V3>(Q;#>0fz}uLk?|rL$sHw5A(W@TDhvwy|E`dP)uFxIir(%81y)eaj4(wV) z7i;E2hW9g9!b9uwlMy!u$S9S?z!^r~3$+x`uEXnT zJN>|Csk!)?z3*i3%yagE0u(_5L~2P_aNdtE9_N(Vf`|9C#dk~XJpNPO>_s=&4RS1PTEq%bd^tDJ~KXc7vT3reT$}g zB1h#~J7((sx?N$<>yD*nAp7l~pG}6QE+p2Af9zLo>KAUm7dgFiNszFKEkRc@vz<36 z%afxFZX#MAqCd*bv#6zitDhx31!VD3Mx$?9tsA!ppFC^Z2>(9ED*u@!a38Pv(84h` z6H-%HQ8Djr{||k?YcAoOAzksshk&fQDEld*%IE#vF7}IwucNzxv-CoIm$wn~pQG-n z3Mm)~<$Ol$wtD(%g*6|jbbY2(IVwwv&vxHeM>CM{H(=t8YzQ&n)smOa#Yc?`-Aoum zOqjE-HwO8nrH;K+*gN8siuuq)JoU@q5hJPVk_JIMUf$o-R4?I$VGF!IdCATfGJE#5 zbS~U}G=kfoEdkrMl2GYP<*D#egZoRHnBI{0LNwd(#siE^d8-YDoMr>MT%ybDEtvZQ zcgG?tg>?W!yGWWl%Q`471vRa)KC6kX$#*rS<$-0ZXA=>JL43yF73oPtNu~Y)=hIIU z{c|YSaLoZbj_gN3hI@<~$HKdv;MnW<#;fu6&p_X>(-$T1oqUwIEF}Uc`CeUdo_ZNb zA8-JEylS=E2q~onl^y-`uD%)}~Grjdr)3 zlO0yx&#?tk#ZA5WFyU&laG2gPdRBD5;6wJSO!z>GZ&9)Agabtb4D`${l)|5ZF5=@~En zt9v|JI!G|k@t+S!R%l&XB{hxRQq{vKj%!5brc!=r{DNyioZM%HGx2K^^AN1Xxw-qc zLay~r#PzckVqGZstn3t(fLiZ7@+;}$1&tXxZj}wyuf!c9ZYRvzJC49YBKZK#(!jL@ zI~$0!m3JSx=LfHvgOkCbM~7=f*q1)ycMzMHy!7Yw=}h+5J(hG|N^8`@26z1+m781B@ z{orG*b}m<(e(?*_6O~& zD=xi@QJ5W7%R%c?*Xq{VG78&Z@!}Z24g^`ZiUY^Uy;}3Lp(0@>BTo08>xD*qE3F#O zd%CRFxXVJ`fS3Hui=6hvs=WD~BPfvmb<}Yrh0lzp&@-|NDg6Y|+jiAi-k6QzHD&-m zfOt}utUZtw?}^&NcV|6Xe~n8UEK~d}dFgScy*>q-H-EeEu6NSDMY$mqC~^1nNO_w( z!B1WWA8s-GE6-)CW{HV#cNES-Zp%0*VwG zBQ1*2Wx5V3S7@}0yGU=S#Sx-5V2RS50t2AB|+cgH#ipef_L>3w0_ib8hO^K73(f4a!_~w zeKx3bVQI4HeKhL+9oNixN#TIL-zk=zy`JIjDylA4qQh1d z;N&p5!C8TPL$Q*57#GXut`^c*F-mBy$-5)H>}oROH?v09sl$v2I}1ES>|Laa9)meY z3}Dsi2M>*hBwYh8fjEyfYym&opYHaEc{wSBkncq(CU+?($tf z3GD4H2MGVF>i*p!l; zPHK`-k{EBJX+>>XWu%`BSvk+?g-~kt_&Z&$X0O}K_r0&jViW>APKE(gJ;?+7rf4$j zly^fWrQBkfgw|wh;6X*w<0mSIR_UeYP=}Dn7nu+gVo_fNhiTi7Py}=UcomLi9`YS8 z2!8{P&m)yA){&v5{O3{JKtmqZS?W(yZ0Ys*2INGcfRTs0o2SgU&36k6sV%GxkSj=V zMR@LgjVh}`&u(sq>Y(?xSCLr5Z=lP1`U6E%ZZENnUR@(0KkjGf6+UYS8d7$5^dv`N zI0VMjz0knQR}DEwH@B`Ut;8{-v_sG(RS+RFknM~JY3L@wh{646(vf&@BP+fyZ(S3-&+(SYRoo~6U)6b z6rejhn5JB-&x6^%(nZ|ugfA)S(nws$HS~U6$8$K;DmJJoEJ00bAp%TtS%3?N)|uG2 z;jSZ7=k)}{4sO5cGdXJij%=IG^wF$YX6OZuKK~|6FmHc4Wo=c16UBSd?oc1N`|bB; z~Nl75y{G$q)Lyh6U$Ska}}8zdc&m zGdkOHr?Z_Jo+oRXSV?U?#&}bu(P_wqax!kQnET#q!MkOGQ+`WJO~uwMXI76{M#TRU zrZqcnx{XBZMUhH6c|nQ}<}B=rR3?r5$9%(?@p7I8yh%56X?UTECxxG-PtBi(jQFmm zWtEHaN+SztzSer#?z?)e5^*Vid3#Fv_M?oq z=Gq&|)c!|{#!0sWtczi)HDy{U^}w)%4B617KVu&bC8#Qs>*lftOz7tsaoACj9!?F8 z@snfs{YhAOYD8te7Y(*uPmg*+=YN}r|8h02eMZz`x6@Wz*O+`-o9@sdhofX-%Pf&OZj7WygE*!5YgszB- zj`MK8C;nRGhF0w&MKPK_pEydnnc|-pH+AzQNPzW?soYB*C#IyGb*D0V-&5ZBvOMNP zHek6fzVbrV(m@Nkug=s&&1Y>%81%9Th$u5 z!9)*rkIf%BHY^r#_D$1lL)44h?nkfXlOM4(K!2B0&q0S__++G;*Hn(FcO}}<5^eZo znF5qF;?Ii3q^{B7{N_wAWzg9riTFfYyoJu|Ry^i(NDmh)N@=So^JF|}WS_EVL=U#5 zH9E+L=s5H#2LC9cSOd&F*i&9?)_J8lCR#Hn>rP^h~P+7S~Hza)1>6 z$pDo}KiZAz=LG)(7Ks5xK;3kX(3=T`Th2YWzEL$G?N>@+FaZ*}DE4gMIYw3L8M6=8 zSL|`x-lvZZ6>76xIOLu`E9>PJjUUSueN;34dG?oM++~F!3Jr;YA50JH)4mlWTLe8) zUzg1dnX?h4FLo%N?pMfxFU(K#o(ud$Qn$4HpnvHyt7Dq#EN!hFEoK;URiUJ1GVKI4 z4g|(GQ;k&)dIjVo@+aHoRpt*nwk=-pGrw!OSh|06GkTgNT4&|vd*vL*Pp9-CY#T)% zq^Ur%M6FNe2j)kbsc@pC&jOyx(Jng>jBid#L)4a)Flwey`_ceCbcUSXWHcjluBoam zIDvn)i}DWAj_$5CLGQs+*`&=nmkS1#CGJ?V>3y5^U?{hZW`~;e1r=MxS_(a>MhPM~ z);kY$coyh7tps)c&~Y->;=el;IIMqXki|p97tCU6Z}Ktqp`{39z~kBk?a#KllJDP& z>5^VcO{ZA9IpU4+k&$@{+ufJ(WlYZ?gzsg83rK8iZx@s;EK-h(NVUGq{rT88;2s_c zE#n8?`uDzE< z65G~{rNLQ&B7qX7;lf^$se<46myq2QI9(9L-z-V&o{GWU?taBTx#XW-)`|%;Qx5a- zZ(y0;8d<3>TS()*Ey7Zi_}9GjnuJ#U{hr=9&%%CZ1)$7VgnHxmMFU`bNRz5F^|a5e zt{pJH%ds);i@%s)I5ms!z(u$S@CsV09ckAnsdzjp+RjwB$D@v=K{P3@WUPM{hB&g- z=1@D*lE5LG>6y&W>Ag%pHF5#SW@Ud>P^WKc9bs+mk(9nQ zjW^zK?)>}7TL5+Q!NCD^SyZUGHm6@2>2S)`u=?=hjFkT9jHl`?c{Eirt&UK8VG=qY zv+f^*E+~}(9m@~G`Awtxr@2S?oA!$DH-7NKD+z{O^_k(el+B*&ecr9{gMY4LH_4X_ zZrD+RN1c#r$(y7TM5<2I?PEeYGW?`)*3OYeVG5%=-}RwkJoP8BoxO7~r{B|2{-N_x zI-6^!7Jc2K^x9N^spbqzQr3+_vWuyuB+QDnBuIE~q!NadUWo!z9~{{ljSW7`O&;-B zSl!HwzMDC9T%*UtOL|-Vn)M(zWA-EvW>OU>~vPynq*m&Ou8W2eJ$xX z24fU+uRS@NOgX#xd*L838zA%QkX2F!>D@!{ZRBW6A)r`oOQ<+Zz~|3(8TYfs9##Gw zmOI``l{?z_w{Xr4oJSR7RV~VXPeL$s(eg3jYC*>pJrKqA4Vi56fJSuV0B$m96R`q) z02|@m8iMcofo&3A1OO!VV_MC88Q=wgbfVlYssN)MWRECdkMgad+y&v;mQ7FMqTOEy z>f1MUec-pS1cj?{Dn$-{ANse!R4p>Vb&DMPNm}aM7b?a`H(urL=lyL;#xJRy~^Rg%b%(gX&y=UeFi+hjGk(7v(nQRMq70BsQC0ODw}f0jSLyaiPe^q9PiB>7$%u{m8Y-K# z17U{1gjzF(a@U0H7&~c|E5vr`5MD(seP4}a4*tg`BvfCzOfu?^T47XiyeUKIbV1CcTuk-J|d~V@~G=SD`Wv^`dx`5LyFM}*(nQ^psSX$>T&0|0o?goFOz z(#S#H0gZ7x&MTZ9*j+jn;f%m^uBwjX9_IZP4g~VZeup0ZN^WsN+^AIn7S5Jl9XO)7E!^I;390M zyy8}HI>Jfx`ek)~4h|oHO31~f1|6Rr07X2Y(1sUpw4;VI=u!FhsEMlXo!GMT!1hKC z7`nnJ01DYo>HnW@!To=_h2f)aL2KJjM){wrRUqaPgTeZ*Z1EUCd6X@fG1R=YCU4cm z8EcLddMv|e*nrj9m#Mp{Zvv8n<>9wUITUD<<2m)kdB;(40}fo)H< zx~{&TBTaVg&9bA2CB8}b9(ygJqGhT3LHXB7oD z%uNU zPbfv|>Wd0wu%ADAGqOHJQ8bIEQwhak(dHb9DcM!Z9o5}(&g%L58v|rc556R9`~*F( zYnK!ER0GoXio6bj1P#sru2uu#|7ymHjn!BHLG7wu@EQ|!_w}w9oaMW}Xqhu>!_+~X zjQ$^fDx`b{SCLn{5s;x;1>1x(S27|kztjmu2npfHd_SkU{aaXI;J;0?XNq97We)Nj z`C2>r#A6!1v`p&}HQ<3K_YQlgBX(>Nn?Fg~H|KEPS|yLzhMzX!t9+C;5{Q5nf^__` zRFxQ1MAF(U7H2-KCH;$^_kvcf2bhV*KL12%0)kmvS~?^b@-7j?LxaYR`ow61h@0y` z0tP%EqFN%YjqkN`hc<57sj`o=OnbmhNvRlO{_$$qmFEsj@0bYu`n-!J$`&julj5< z^vhEU^q_Df>%FdOmPpMVEKu}-s}G<3{#%M={aKSKBe$@8n~{7AFRbi^QBDo5glCFRXF}aLV5%OPHW(CgpcQ3Dg0nVY4%xc)M0Whf?Y+Jx0g?KA zO}oWCKjHK;+vd&iTF=7TvS)Du%&v+DLD8$H7uf@e9FI)L-@|uR>nf7j?H7`Hz2{{y z`PZ}Am-&8;$Cbl;k{i8p`iqCJ+q}v%hramJDJpC0rsLW|YJ8t4Ud87V;=R{E2j3r7 znE472Ka%3V?J)!U7;HFw*WM0`#T~G3U<9|ksTX)1r=x^#7`8NY zw5*|;<QK-mJS|!6AgXxT3>qA zQK|6Dd^1U~*y!g2tKYBEAI=^Y7&GZ(T4LibVzmS5d!s#UE{~$Gy+)YL=%vOLgII8dqz+gbXztb^=JCK~ z$R7*@ue&a#cp)~_=D{NSi&{hb`LkYjtZw|!Y?_G49-qb8%AD-RWxFoxIGwAh&o|N3 zao)9uuaxvr7T_4x&spBM%9!t@pW&UeC!P?--x^ilkr}B~tAFs6{<9WQGXT}MU^rOn zXM-9K99@NOt@CJmZ#e@{_kpmtIsp7!>L*{{|2ZUB1bSMAa0msh2OR_Kf`H~ZLP4>r z1MU4uk6;9uj-eKmIc&WpiGPI-$zr8b`;WQywJmA+s}t;sl7hwJuXvHTt>a$E`~7xE zaEhgINcXnE|p`_3v&0%9sR+A6-5fYV&=qvo1NysRhlX5|+g_ zPf2NP?XbE|>Yc8-1HSNceN~xEcHL3?K`doB>#BvMU!#BoIFfz#7KUimo%PF^#Kfs~ zYJsE<$x@*e>|Hd(?k;Pn+^P+#J->Ku?sR3T_Z#*;Oz*c)eqPVkBX)MycaPvvudl`= z3mBaIY0qQU#)7Kdbt)*hzv57Gd>>uRel`T=2sF<9!Y|!k9aaRilu!w zs?jR7+8s1_MOjk}>uaw}h+yw-`>lvsk9%}a67Ac|Sszw6 zgAFhbfNr8o_s-Ny2Ud=;E0|kn^-pT}Z)JALjM0#_6YAp#xg48cZfYPI_Wjyl%oed# z(BoISF92*ciWWR+rv8ebV{pfxnbaFNK`Np&9Ic9{-!#lC@&Yu-E=IDWp^G_qbupE@ zMQi#GEJOEy-_2dmm&TGC88!7^wgt@C-0Hmx#lkI>+Si!iF5V0EmcDqb3kopWUsnV* z?FU%BJ}JY~+i?I3r5ZNA$^2mgAK_j;G3IByEQoe2zq>R74N>hIEhDtZ`P0Gf-XCiC zC2o>NM?dxARbwHpFZ_xiDh=A<+po8UhnJWr-Hz@5^;%pt@U>e_l@Mhcxn_{Adq+4Y z1WcyTYkjgGYSn+$qazA zbu*~RZkOydLN7I{Sy1qIVXA*)cnmqwETmtx3*&CvMJU)BXG+X^E@+nAH##`KG4`p) z_pho4$t9caE8pmJj7g>lGkU4?yTGHfn^O-{lL;F6r{~GiSz9WFRDE&*PhMkZo_?@7zKI$cp}ivK7)??EJh+< zOxQw{f1&iNns`J0eVM5JH#N)cl85u7^enx)4+tm5Y0EmismN&AeyqK-gPM_><2--> z2jj{{KdF)cfJ<_7>v#3>>DuqjSfZWWfbN5|vo!mE;D(qEYEu)IKN%@BwcJCAouw#6 z3B4|iOHZfwcYIhF4FLGJfUf=;#4WAHBy+{QRC1?k92To40d%kZl$0W1!pkRk5)-Uw z_j#@`Q_BrE=)}1e%;4=5Bu-@g7T_a0-WssRe3ks(-w3{j*?)D9%1XFT{Qz5H0$ojb z=iU(d8V{!=eB}zR0@(q| z-j@b&-kYI7?sc;eb*}E*oWKE{&wkgG|N29rIUM6AUR>E{(z8?Ik?4uZ1?q$43NGMI zHp|tH?-T0IU_xh>E5^T~tfLCz0!O}Z*&xlPy4!>|BC~?-%Cu}FEz75G<9|Hg)j~!k zejJwfB099EKhv$f7oI|Pc~B9F^s{gzLv7Az7(O@aX4^_fE|=fC_X&KRoTT;RPW0Aj zgo@QZJb6tdKnLLj!ljIGk?5o(p9YE;8u_FF21eFfj3oWtO*_uT&CF_2q1(FsUMsrd z)kh&KMbCd4gsw5qw!-{feYIz0J|x47M&ntWD9mxR|07ddoB61&L@9qRNhl{;w96Gt zyR0Moa;n!HaGZ<8X9K7xtZe-3!na0p#E(3yQ-8`IfBdr>lxS4zn2Un2 z-zQ-GJ8(8`*<9t=eGqQORuWQ-9m=mKnz!-Xo0?ONA)WPpU-2>adUkq{);3%D;j%T? z#wKm0PLgfuxZd8;&gWm>f%8v>HTT!GuV?9IyT3p_sX=?nna&>(>Q(tK7En>4PkCRB zU9Y=^9@Lu7_^k*-kPrNfj7D%Jl4!es0ddJpe>*(TEv*C4WAtu&uWwh6i^gjymBp23 z+IkUMO42u3JxEZTFe}n!edl@fIKwyKhWo{dufs6_*t>5W#!tXjFcasSsK*}a!BYi3 z>)Ws$GqbTw{}GD}WT0)dw49`@A{MLZxNp^Fa$Q0s0WW_i9f-0Wtb?CdwBz_FYK+6V z^fPTOb`%Z5?yHHF&KgG3+k>E!-7L)rE9;xCyX$K{O;1T91&}mdX+74vKiGNd=pwzb zoIU?Wrj8{{v-@w|NbS>fDleh+18_k=?TaF6JFy;FkLTm9xIZKi>S|<}+3l86qV@L! z!pQwPN>WGR=lzXj-09N;Mq>NjHt(^sm6e)VK+u70UdW48D_-)$R5?K05xsjWpGA|e1KBU&U_7&u>#m4&4c%fASq*q|{s&vMK&i~EEu+%To!uC=8=(XmoHNRYgvN7qx$nH8_b-1)N z&6#}`_g9Nz-Ka7Oq=6_qr+rxdj;)m3@TXF_s-t7V+#VrMSF<+^0k@n*D^1Bc7FA)? zZFh?eGxawA=u+?T-ca5lX))PpZ#C{@YmVKqMzlk6^!}WoMju9D=zC8O`Du?bdWJ61 zyBY5+i>BNFW4hx?V~XXj+51h+)pC2@l$hI8ZwX0c7BJKy)bZHs3~lUCo_*x|Xt0-t z1eVtfZ(E+4urBj=xShhc)_GuqbAbz+5*h)vs95@#`bR3S!@BPW8`rkFmGy3QN3VX^ zjcg6#ukg1=(+=EI^J>|yL=PjKi1EG84aW8*<@@AYws%+UEV;j+OBrxG8{-2?m`#8r z7@U)*xO-ft%rhXotsH;#gKo*h2pCPJL=PuOb~%%mn3Foq$|fb+lTOyk2J6-f5Jpuy z4>Z%2dh$y61zPIYag)uZbz26UQ}1ury`l3tJJ@ckRRLZdLX*d|V>l?uflj-?&_TBWfZ}`Neu7pAx_5^8O9D@+&7>PLOEWU&-SYyy1MkJW zjtjvrgy>hAO_nO>KN`vw97I0A@OXn0;wOKNyK?Rv30HC=fdzr>yxieOyBM#N-x{oL zZM0L(o`v8&qW`H8>i?%k7(J>HC7f@bP+=ZBQ~$qzg5bZQ5o`?R2?j%kL6!&he^czS zzV~<1%gFYI#0nhzKAc#_@E@>z80%@xOh1#iJtiH43D?J_EcRu1VzfSc`qG-%=?o0h zJe|~glR%K!gvSj&p>`sE*uT5iam(R=s8^X4j%XSwWEfrHnF(6KkWd~)sP~C5ZmW!8 z441^zm#2oIB@p}3o^5_(5tWxQnC61Pt5JTi8c)%t5k?OldgRlYs}9eQJ_2b-`DSOY zFlqxBVIA=4(TbVMu@gO;&E?|mSx|SaKV{r#*3}Jjp9_b)9faR)ns2`Z@sW={8&^Ym zz1YZAFs|K6fKB+jp3VE`%W^+G;GlTM1+3a1VTQV%x_+V7-a%q^biNkC;S-<=?uAlW4qT_B$(dkD7YS zI$E(Y4Dka61h+A}&w~H)^*zay;kYx1Wx)|_kr|BAIZm4H4p~r4yI7B!#r=`$m5Zsu zG4t_FilekFNzFkgyAO$Z!R?!q)|%u-Z{6VZ-ac*b-2J+FR_o_c34)8tWB6P=j>qB#NGjLO9@`7Df!J^}yq2m8^g+4hFrY||GtN65Ny#RSCqKVT-~R(YndaO&v0H_L*_ zz<>Y#Q`9{g#A3v%!@2%Pl&79#HpytBndO$O1PChA`;e^XrO@#}@W*hFX)fC0eO*$| z&qKXv2Ekax;5-}2p!K=MPBnLKudWl=%AL>2!^%T#|Ga#iW zD8+vsG=w<)5q*WxW-={EMwoXHJ|YlbuQtMu=}#TKb{xC(*D=Sprd8*PHPpTar$me} zX;`$|kdiiaH}uCP|6WWvsJZo8+_RN-0Gwp~t3ia_N1AEo`@!U&}Rr5^PapR_3?@S~h1J2Hj+z$_L#P3YW(eivzn(+C|a;YFdY`U|Q z00BhO#{EB{&N`~eKkWYl1Y~e95RjHo6bX^e0fGo3h;(NJ&eM z-00CgV61-oKELOj=bxQ>|9{SPf9}`y4yXDV7KHH>>TiLT>l|6L{HDWAK*k-Ob}aGiApIxcD?ro zAi{h`vX4i)J0bX;>#kqlwVGiu2Fno37ViJ&BKqB~PG)GQr%>i(P|!I}CSRkP%NaR# zDkl=|@D{L8Nv76itWmr)*bj& zgbSM)rgtDeEI2l&j+VJm`*}$-2Ap>pI{i>l#+reXpwV#cE_uh?w&a*3&j(pHxZ-t0N0(tg|Y@BH=4soleh)AP=kkw74= zSTesYE4Ym6iRdP*cLOs5Xyvlg)O;WCbw|97E6gZuMU#>9BFC;=G#dXfxsDXxm{Z=z zSwR{MngMs}AXBlgtDvlaeH9n-qjT(~lT_NuR)R6Tl{Z~O!0}ur0 zmFQKi@h~Tnay@Mtm)ziLdM8q6cEC6FQbix1dclqITQ7|cVkI9pUN0tP7-|nma`0VL z2d?pB`uC1*++BHp*(ryw>fRUCa{gv5UK(j<) z)AY?-+M`UilCqQY2|Td(){|!LMq4ww5395wg_Xe1mO0v8eZ!SPy89hI*V|$7$D?1r z{8^T%;1xk+?6p!AIo1iG}Apk;SNBTp$k6R#AaMEH?ZxK%Y2THb7|OWLRk?^zSYr@=Z_M}UmDYH;{iWETkx$71 z6VYy9158YuL57-f242821M^0YkSOk>I|8GnkD0ssngw=duuE-K|CH=o3Sg6Z#KB>w z`HgzGHkIvw+H1$KzRUStOk%maP6ku85y9_vJ>;Ki*8FnH6BbeU8>biA@|VkA^9i9M zif9-khzM)V#}6%IYX{1{KHl&jy&H`f%8p9Fm`E8J+y&;q3JyS0lQ;>OeCGxyMb{P=O04%gv-HW!SxA(058sze1iFis%{! z{9{uhDUnn7JRI(7kSiHIuC3?2ULj;{5B$2{9Ngc#0n|gE1fVga(^Iy0TI7i92Ytdd z9uweOXbesrX}?qB6Ia;?cRPROZ7iL;q#iL3wh)7{DRXch zZRva}Ir~}G?y-lKUXPd`zjRNf9LSYdznWQr2Q&-~u+JGOqR8446I=n%CTUIWP*yb+ zHYS9`2|t$aEbt)fs4CdYzhn^MZ!NwY9M2718~dHEAZ);kM6S1cMSSctrh{@(uvar7@)%ZN zl0rX?5S2iifxBbi%iUjaEiZjPFjLn(LORh{Oqt4U;0f+tw+gT;_RAS;%c8Al7v=1C zW=gn=MPgNOA5z&X&D8p3g4rFYH*MsFX1x``bpt;rBh~o@=1d~^r$cqs(Tps z%_>ApF5Sb0JyGS;qPOtqivzx7y=(;9(0oMTt^0BK5bu942g+O%t;h9T52of6DLjSY zmV$J^C!>xRPpb$4Fh5#Ag@`5G_4ornAb{<)2-e~vf}=K5Qe;I0&`u`#I5R}E{a1NP zuPOi_?I({yA6iHsnNIY+G5IB-tEtfAvSt|5;SFcD_jJ=3dddtpSp(8fs@*OyjQq@c z=^HzDSCA>=D{A%io!{%z{c!Ja&M4*7K6(*6VFaAQ)0}Rmb*7CYM!5;}`dj$Ih>Q7@%lbqok;6Wl+iiap*0M3xg8k`Gy39sB3&oCoU`x7Ftxu=t>3WkY6dv+0 z0?f+;5$8OId`ju%$9dp8lr!Wra7x(m6UE?C!YnOE(^+?Z^?2k?rqMWsV34`|!yLnj zt10m+BPM_9EU)S?!jf{rZm%X^*B*9!0U=-@@pm7MrQ+^~ncB{{kXP|04Vb06|SI8>_>2+KO-@NWr&obPV=spJ35`w5da z?qSpnr>k1MmZ+0ByOo2sSqTvy@KCXxlcb`h8(Nm3HgL2h8rkV<*ocTNzyM_X1_GNO2NDK z6#($7U`sq8v1)7aQ_F4ifq?#S+e37qRDOC9(|Cb$hLbA7N#ov78N~HO!ElUu>C5Aw za9_W%txuYtLkx{yy!B(8?%mWe)qRq6*MGU$X+pvD%2V3^)xS397fyEif?_9X4Vx$X zbF?sB7Kd2I^4EKi4!_mJj!{!LnIBwMzFx}`-cS2|TMynIM>*#Tem?mYpFFz=(YJK$ z8hG{tu4a(x0ax6imRm2_!bcQvq0SZ-uRW#N;JZe0kXcR>Iqb(kuyd77QSl;JsbPzEGXMNUZ>Zoe{TqPxi9bK;$f@lfG$EDam4N zPhpt>lhJySvA7>ze@A}Mz+kOfOByM2T9C`j;AJfp&P#_kd|=0@fubF%?JckM9r8&S z50~G+@(W+unaBR1N-ntmioSX8LkJ_+mS@1Wa19j38uU)sD83P9!c7+OK^dWx3s^o)~UNG2=;l0vqIcaTd?fLytHH?=kT9>_G4T7 zfhr*XzL|C(ogcreX1=`sk*)vqdzZS2lxe0A9VgHDTPvrmiQziEnJzI4ZQp{~-y2=VqoXX4?i&?xXRL|0NS1|3@awNo0aSIs$wDKMn!> zABzWxPmmr+WP;(p2Uk%wL>?hWZI>5!qa@q@7EuUf+ZXdk{4wn4ubNeuWv_NZ<>Idi ziMA9=JyGi%XlwawuE1M=bS~zI?#Wby<3+lZqDQ~CpyM_HCr#XbWc!jIrG5yvDeU(W zAC@X3(ldseZsv#=mcxTP=v98+;yrJdnEjfJeAHGFwLNOdHC67EBvH+jGV{mYYwPdo zS^{oU;Z9Gdl?MGuPC-f~8NMl*k$CWHsd-%eooz|QP$=XVI^5dmL;p$ROF$$}j5co| zA#efs5L2dYJa(B{z5A;yP9UDUe06FMh>ny_nB1Uww_M&D+`pTs#@TPK?Na&TClz8~ z_C9Fv_r4#9u8Tc|)}EPka60t4zI?g(e6Lt^g=K(XI=k?R`$^Ic9E|Jmk_1FUhp|%Lg|xjc(RfsY#p`&*4q`ohZEQj5h7Erq-h%ZUus}aUOb)IrKGIhC!0uKZn=np%W-cI?!vTJ2oWB||suM4j zH;@4htbHrYMRiEIl8f_4%i?~a6ukSNrZRqcvg&yrhC00!nvMFBs@xPh*podG=)T~3 zsz2ZA3t8^Ep%(P6U+!>x-r?fBZ|eQnhY(5K^relPU#(y^mB)x%Cw}SRfTn>V3-u8D zcD%~a`Rf>p3s+-obDI+%e8_6adq1ruJXK>j4>^$=Wxe$ zIXrG(SP>z{{PRqL_l@J8_N;{D2-iobb{l@kX7&W3{ zs5mpBH(yG&+H-}F`ud_P+sZjtYeR5l^ixgZt)qbK5x+aJK`6t~IgHRJ4cA^{ws&Er zBeWS7L^er2kU&J(hd<;5$|XH5nu!pyH&23q6rR!tiw@L4@+_E4crIYt8hZ&jE4b^~ z>oyK>R_Kl-KkMl3+sB@%QoP@((pn07|oJ|Q^ViBg3IJ_p0aIOq(Iokr-%+=^pD*6n(@c=R#ePQ|L?ND&w&DSlfAF+@n z*J-<3IM}B67ZCF4m!Tva%(MTjUuVB7D_eXl!Zv*)u@3mq<)goU4 zFTX0uZmHC*rAyVQBq5uZiIT;t@Q|DXAvlrfS9YBed}#f`z5*mzo|XLc*#{W@saP=_ zRM2WmH7U7=r6rs1obiYgA4ObdvM{VmAhPYRlHiCzIoTa*x6S>#e#-i9 zLTsp2@zNLX5sSE-%9J1eTHmQ!g6w!#oq#b%$b#<yu@>X2=KCztf$QMDM0o(7(%(if zLmn6vP=aSI9-qJk#ND`?=+B;K%4R4RchMN+6s8u4_GglHm>)@O>Bw8icgxdNqg7$Z z$0vmNdLfVS>%^=lWg%74H*8M7)ciavty~j72=-MUo|=v?qw6P*fM?2^!9qV6j6CCZ zRC&^}5Pq^}e2mG`Jl8-XKIV1c$ADAd#wU}U) zCiVGemdAnHXZAjiqZA>kMJx?LMsF5s!J+DLRrPD7V^7S!GhsQhd-+CLo-8{xGQYJ5 zRrjA`(06RHUM!a8aDV|cX1 zjcH6W?B7M+yFhmb*?&I%dF>vOAPxQ;87!+QFt`mjdm%9Yy5}A2I5ph)HQoyOR%h`o zl(~K0XElG~-h3L3f?U?*a9m@Mf^2k{3B3G|bsRi^)Cb0RqK%9G&XcQ7pLUp-8LE|e zT6xaL=&>kL9$0o6(kCw?(u#mVbpl>R4Rt&u)Yj;w-OUY0{e`W4*@}I0lqffLGsc&J zi_6zOx8wRM!)Y;;Jeq@#!#)>v?UBcR5NQDuZUD8(q4pMHUvWQ@LOe~AuRV;aHTgcbc(xm#Knaj2~H8ksUIjO1m9^c$h8#AdT=6O zGIt5Q`3eXipclhO$V9u})?jE`Vx$q)MR#7ge%v>j#in5`$N^9=l%e8-qR4cTW2Di zdAmggwxoQ=vr?~-EiTkNc}(BAHQ0zDC$5tUU4D$m<$AstXei*`Yr;`g!!7sp^)6@U zpXz+~fO^3w`bMb`6RXq&tsZ#K1c+B-sc|dlBuW-{n{l&kydl=Gvgabu_GTk*wk0rQ z_$9i}k>zkRU(8>_qi!>BJl1(pEEtpJ!}*+#VI;{&$Gq(*{T47>E*kPjIEQ7k&r>h$ z`uzNaAAtytOEY#~?c}tBa$5ZUUBo#Q+>wQGNvs&%uGn_UM$}pf(K?u_1n^rOtnI-n z?am4<8^dfQVCB=%)t8~cx5bsKmtGjM`CT_)N0)2BmsQwDacTWYmm<0SX@ZZ0hw0Nk znPWJtkP_X02TWA3?LRix_XJ{V=}V`7=s*p2-Ia@p?eUfR5VY}YTr z|3FHqvgL_7i>>sX{HaGapoGu^3EqJ}PJD~E-GT+%TE4@*-;GuYC00z8&uc!s4<(1Y zy%RS(0+w4ZG<5IHFEPf7Bx$+!cR4E4xoVy)spbP>eTGV=hJIgf|q2t`yrrIbC$3HBmeg6o3HytwK~+G zo`tE45=uG{T1w&%a$ENU(N$bYdJzw>Y1hNm%}sA2XflIuR69j|LP}72ri)Pn{=a2Q zt|OBvV(^F+pi-GFkWX@af4>dgCH2L{CT^Q9^(KW4zNMkY6ZT~l%?HT91g+J%xaJuz z-AxET_$`bDF0up>skZu14QF0vVgu-j(5LM+FXmnjtq1g)5Z_<#mamu(BTf6M8X0f- zUOB&T3_(wYR8HBN?_B@dxPy08yk4*WRQCx{l`9?CBIB_y;hd{d*t5oM_5KRClu2Ge zZem@qcj!^l-fWbU9E5(+dm%Z8vr@R<$E`!gK&HI^O&&*8_gE} z`qlNJ4TYb6OFI=r>luxkObATA7&+OK_WJ4;PuPNPI^yl1?~!GoEeSD5fMl%IPw!z# z%)<+13CH}yy6d!he($Y%+)B#$tq9HO?b1FmCd*vs5rSsbt_1BiuHh=jPOFJdvh@J!CeCU9VkA}<=%GfqrVpTuOL@H z0Wrv%zte@vmx1mHPliu3@CiHd3j-X-a$V@D4*_lB2t0)C6u-#AtKqLu<*TuFIwDc#!w^pg2WaNi1e zy056<6$ob!fUk`;|FY5xkUnmZs`wD`V|U95GHBqZ(yn+&?+&g7H2F0@?pcmZ#SbE` zZYT?pe@wua$i_^eC$s))a3y#-FO0(~F761vbL=eQ7pU{ltYQUe+4VI%SSkoSuT;3= zTVPl6gX(lj-#CIW-!w#cR)fY?uddO{SjBRQ-nP$CVIH~QMp1|O{M4Z)Ifa(_@&9EG z@&CshEJ)0OT&Vrw{r?~X#s3tW{{MPYQk*8qtwBRH%Qor5cwGI>HB2_uZ7iqADpeDQtP zz|i!}HF46t%xY zlpeZxh$C{CN56Gu5}(7CVZh2|pT?d*E_C zYVX=l&kELkGv;ndsNEhjbP0jsH9~j_V{(UW?h6zr8^~}B*eNR=6b;F7Z!Df$j448z zZ_f&X%wBBTGdz2tHOSGPNR2C4c(iE!K^*`^n~|EHoG6p+$)=dz`zkWO+EI2!8C+xV zg;a8Y2>s-+?`C|KP<|A>X~&odGN31X97nmGJV|x>3JR9}}r^syy*uZq*15 zve2jM#7QN#cNHza4jyMFp3eT16+mu8D!v21>~g})2N}-M?%u7Bkp1AS9_+4pwphQxR{!1np=b3U!v65S$+A(!sICa- z@Vnwwt~%gz1CDgL8wBdTU|!YpiZjZ=U~nCaZ4TlhxGs|}IZ6}fa4j(Ak3026%P!o< z>^-6e{u+a(!SGBalkmN@4N!6z6x=EI!pYo-4{OFED%}l;^t%aszoMHl8BN0%|Z`_WHg|AdZS= zR!irulM$hAFgxA%`lG$ryt2pG%j>_w+J`0_E1Cm#5_cwbww875Lm~$=W5DB)GV389 z%xnsRyVjGm=5cmEQ#EGkV!sg&9WPqnJ=wP^HJxoP*)5pr@t$wgeIvmvHY+%IN+=F$ z|AeOntWd51YAgYKN!ApvNb8HGpW~9B)m|FQ(FKWma-_to@D#N!5oQY1u{LdNDaMiM1%~4z1-}d@1(_A>Xr?&fk#2C+Y`If`E_xL z8;87#iVRhM%+u@q3x1tu)x8xT(l`qf8EN|-y2XbZf4I5cs9bvZihn;SadPBA!J83J zv$5PwV&|}7Fl8Ga&6J=1gL)K^eA&DlECVY!K=AJ+#pT46LaVsNHu`RZ4(Y@~zi=*h zux3kt3Pv#Bm|yegVUx)?tIf}X7q#-P(0Z&nr$C+$5<&CTxmyZM10C1|)uee`Wb~uI zl^dZtDZD+ghLN2<{-_7&#(lJQ=Qj6M?P{Rl`|Mv6#@0Wzbn?=+_-k>DQ~YF!ODp>M zIx%UEQ7?;h6Q@&>W?W#nGwDZg zaoBDau^`{@Y^#ro5;=N1T0R@D0q(LBu{WEYPXld5Ta_%TXZ>M~Y6~B8H8POE{^H)8 zr;S;?MeZ=~dMg3=SZ46cX4SBcOb_D$7Pe7Y13iq+Bc04~>0$n@+LigvuN}K5LdG{Cyh{uDa=YM`e~(UEP5F_R zg<0$Cc{S~R(M1a(0s9#oIRC|KlUXLS7ujRaP0z-)@;hXSw6z^^T;4Ha7^U#DCm+*|mIAN$}n)vC4<;29ur}$3SsJ`D9zGrPV zowrS8^JScxHesb;g8)C@<^aph?(d?g*B4BAK9z5P>P!{q&tQ%3jB;szFqfFTJRA(` zer9xm)srOxu5z5@rlJu)T79=>wj&%`D}VJ22m>i>Nmn&{o65bP$LHh#u6#=Q2DV## zan!$hBj+u;mRr{SQ^-FA=mJoTko?PlBRPJ6YFLw;G|>5*m^1*e#bKR|4<;)mv%avH zT%PUKxC?kN1&8kO`&o4(WqG)sHvM|->36vGA!5TJO`>RI0s_=N4%iAvO*wiI3)e$j zpaLEKcDVNaQ*#}dg_(kghx5$svK}Iq#rG|Ojo8iLOofb_qkAcy4!Q40FuNU%(Q15mN=i!25Y-IS;ZnSNyh+b@%rGzjnts!& zyx#ta87P1Y<D;@$f82=v$>sGR>NkgAVp+uLyc+w-r|zTk|j&)AMDqVAv=Xc{;ZgaFE}Z z@$jE7ZK2aq-le@?S_z`b5d?}?b#_p-fwVKj1;e2HO-|2h!kcHWT4hTP!l_z|h)eg7oPnt7ptUznGe%`N}8m<2NDzUL| zt0MhSHJxEx>5Q0D?&E2Nh#04alBlJXlzju`jhgZZ+Spd^chrBHtz3{kK{o(3u#lzh z4+3AjD6eQ+NEMcBmZTIaQd+<|oc`aYxp^AN$wB;yX+??ZS^?mn)-=&~4FB?3t`kvr>v=VT z?>_a!jMegGtTXKl%Mw-?YnZ<41sS8h>U#HwYhH>T>(we7G=OP62}%zlbzfwB)a5QBvK(vGH>b)7-f9J@{+S~ zV`1ur^7=!(PZi_~`7dgb3RxpZSvw}y>vJU~m$%41N<332NBR|pi09-%S1Tu!*ZV%> zzB^@CTBP*uDN6CAkENhU0rOW^fd5X#qKIH4sRCloqU#Mmv%o^7)IUld zRN94El^P{rxi9ehMaX&MB_?>eaJ1f$;+UCq*92^nS+jRUAUDl3W{kPNQUY$y+%Y#+ zEYBbL3NbWu|Gm1Cl^+Le6Bl&}-?x!6z!jc11{&V39jCb!-%gKiFvB&CKCXz1GG$I5 zK5?C-#Nm7dv8e&iyufVl7Fje)n_Mev%tS)f=IR=mQek7UNbaw5+riHSA2+fOx6F1} z?npO+S@HfU)dW<@*F2Z7x|$=O;-;7{4>~u~4Cuim##$HgJ0Xh- zLKY*5jd#1^*7Qsp-)r%_h6Y0*O`yH^Vi>x;3(%KS@!^CXT3Jl&)n>Z!lBBwSe9$q}x1t!58f?wFrD!1J1AGz-OkZF)WsCHT7UNC1aoVM*MVv7AJ{&s200pKn z!*ofQm_MiI>zRWVJT%Ia*;6|Mp>GCmLJg*$-oytrEp^MZE4tbSNLpaDz!56^%}}q{@@Qld@|6MA(Eb=LXPJ_21Q5V^(f(4*^VbNaDR-pcO4)i4A4_TkU=?3Zz1FQy zM)R~EMD&&Jj_`+#^_1S=;&GqR*@2ij(c`zFSis452$-Y9Y@p4t*65XU;2$c!A53%|oKHOQC{Q|G)8D!F@{zSg3EN zX^2Hx@2Ian(*LEtXm**%|I&)e|DzR_BwFF9$@$^_f2s(QHsTJE$W0^y{-^MR)M$E- zC~~o9m}13Qj6s5&QoCWVWuWP%W7y`N@z5{Z)?MnX3j>(q z88K4*s7-5F6C&!<`smWnzUj)eA89ai5-J0Njw;pI3ekwv{wCgC#370U#fICweHwk| z?*XaZ0g!=>^RK3%%qpt6H#W~jN^&I(_DxD)ijKCS%O5b$@Gt?*gzQ$N+kt+8>2Zgk zJaOW@`{z)P?#pqI=hx4;h;b-^1}=*^%fr zSmH0zZd_hQ%99V61ddD!rVV-p0>9EAZAOWyCknp2WYL1Ss{``c8*}Te8FAY^*_D*v z16Q({Bl4vpOaVA;qcVZt(Ki4~bw7~LxlGs(^ab&i=jmF#hk|WwPtH3Gb_DHQUIY$X z#nv;UQ@CV58>Y#r8k7Z2uf10i-9hloW)!nTam_w%Sxk4U?#9{mKUVz`t9#ZXgJg}U z4Foo=XP&6P>AvH7lKnlqgzfd@=B(_2`i=A48N~eA>uS(B5uF~&h;X{}SGKg2*_XU- z03A%3(N|^cRD=f3Ah1K&Ez{BrGJ&46v+|xV4Tsxh^+x&=@I!AfElH4pIh`dw(H_C( zUFNlGVlovuT3`E5%qoZ;*XO55@|xNVeYil>(#SSkY^uK`uTKo$r44Zl8dUcOl`f?n zwaZ#v7zCeK&fj@c1t#=(S<4$0Gs*|fk6JfNS(u$zite4{ung9Jq_;ZFI1xoRa57)Y zV(wT}d3s~-6bJ<2z0fa=UtAnFOwP2vK<%Z)HTbD=ZZs^&b8w0w!%aAQ_Q%(f6n|?C z$+#%ynaFO6Eho#ZBgNW$eWz^JWK2JPOSWnVu-~j^*tY)Cz35SwPL>XHS0bz$h$`agpT5;inG$C=r3W4+=N4tIn%= z(L+^3N?(tqI;VODxLU3%Gbb@g0O0Ci6#4ZG_CAxG=Q;9-F6! zHjNBcTw?u4nr;2wUKNarC_O4p{?wX;%eQU)ZpYptJ!Ztb72~!(=-+7+mewf;y}Dv2 zaJ;X0P@hXuNm?Y!-CO0g+@vv>g+PsAt9#dFf|gI<%aBnxFmVZH*Ox-&Q@qj{;MY1P zvc7ouJF(SivqE7Xb^mm+ocJObl&1rJ{iq}A_OJCYF&S55ovyO5O~mMTR%gN{Mo?{n z@+ZT%pGKH~-L)4eunjej*#IM`UxcshEU@$!9CKy=JS;G5z zf-{__1gkFj3ekF$iSEV0#p|rEr9_IllP`}hi-72X`#Z=!9T>e#v@?xQh)}>j6ZhH2 zoXv;zEHbhM)G^KK!(-?L+4_*1MD`oozhUsg0!ZxA?7CY3dt-Y4zik@TLLjv3li-#4 zW4do}do%UNI?~jn(eO^d)0kqC3YgzaLKo=BIP$xn>#a^6LmP|90l~h&j}kz-<-gbS zVq0{i;yt$nTw>b1dB1TXPVv z>*D#uR4}-RKI`SEtEa++EkZx??1;$<`K9&-Qx@kAWZ;32i&Mot7$*ny-sn!!pED-e zA?(Ri`->aZR>=OV_+{i*x+tN=!?(=~YBTA5+kw`fU4Ak8BysO8t-{`aTK@)_p^>_^ zxDXF3)e-hocGPAqQy8jt%X9G?vtXuqq6$8neTcI^LmJ3lNWMNbCG4=iY2COljZEyF zyu=lp^haG+PS{Ri=ybnud_%1FDZn5+x0E>J_Fp1@I3c65bS@ft9}mf{!_dB{W1%Rn z9}L_bymjW``mW_{OKyQ0q1B{4yO2pa`8Dqmc9p2@flhTOE#XzYI^yCLg*jOm_$d;< za>N(7-QSthG9{kl3d{_KkAlLFk2E63oR+8FR2@>S4bx3ODM9Oi;?zS zcca616&w!S74j^0q(@chUzfvEzO6tY=S|(RW(xL4TA9aKpVS{l-*L_sF zs3zJR=Uuvx11_GzZ9+d$c&>kH``YUT>G?v+#6?vxM(hP_u5Fvz^U(k(w132FT)Gat znQ!dmG5a2ked@1Mo%&I&;!tneS$yI=Jl+Gjb!lnXE|miR(z|EHRua=3@1q|EmDpZkJ5)Di&}l>ujgjjUy*oDi=yCw7 zkLBreL;WbpdbUfVDR+&s#*Mmvoa#+QO+xN<8LdB^O7e1NCB!ek6g%pCEGk7T(OR@` z_)&JWt70AtzZqS{2ctUdlF3YfdYqyTCSZGV81kW4zWKyXUeB1%Y+Zp2UL+?RGWgXb z?sa;7w_|f}g69eYET_H5i8gy7?$|ct+{h%a=CT}~G;bwmvJCaRp?6?e^y&;FE|S3J zx3X9Zk8}yDmE9ich^pxgJz_Z+<#jXkjG-ock#*41*9O|-ShL3lA+${IGz>=iBh0CJOYa1VF7-)&z zW7?Ulz6cMF=4z*3=2!@gHEZiiB6;`X*7MtglEigRjI4!OZ_lT3S=&zW56}uZ z#iOGXW+Pq><^b*nq+&7G#na=gH1^3&&mT)ER-K3SSeg^0m>$GwViB5?xWnkA*c|4) z&&#Oo^1}5_Youhx$xDOQ=HZ6>VXekv5J{|6XixZrEHKR#qRbVKU-;?7ZO4;PQ((jL ztI0jC8gX{iD1L!5CJQ^W(ve(TXqzQ5V zJ_>)cQje;9s#Hf2!cT!S;mV;mynC`UFfqm5dc8J<#m32(kNw?RhekQ-5)Id?r&Evu zhz&B)lb2M*bawJt zi*EZu1AT*mDdIla-7a!IOQp*dO+$myS2XwXNh?#Nh&^A@gQQMM`Hpd3n!K+n%4bFm z*Dn?UfCD^-L`C;Ru3fy-UaJrF1z7|wNkY*Kqd1or0W2T1<-Q&vMO=>L>h5WXaWz|6 zW&PU{v*pn0ce4LWv7p#+RD{ELS&F+US^;N9hO1GZIy@Cbp#t{hUM}J3X~sw_7xPcK zn(?2W)#+NX0jvJ^kq^1I6Y(f<(AS!|(jJP(6*$^J-FmgD*e~2K8c{$>Xrakoew`Rf zA^2#}~ zf~nexIxin$ku2CC2S+MGBI*_<%p)mh$MAXM_}_q3H(>FfY*L^QHwG@orAV*cF0HV;~^yr;9}{zGyh!w z+Q+siK~{GYkfwH?&TiZI@yJ3ug8k1v<|Ioxw5hg*t2f4v?K?$|Qj}26G zA5m7=O?a9*1)%sogyr=>c7Muq1;d0{x&_P4KjhE2003%$(zt>|W2okW`H(R=;4c#0 zX};n0^~pmac@A9~zS*2sjmcek@gASP-%f51GGU#W?naSzMFLWh_7rzqncRd{tP=1kM0*X>p1`OsXZNkmZI#7a=BI+G$vkgqcC53F$Wx>WgTGy1amL0 zWrIqdGFsog<$5c5g=2$y8(HF!lj(CqUWFHQdlH}g+!%m&_ucXSuDMh1h^zFad-+j? zVuOQRoZkthTukO0wpyQZ#L}*Z_NO+ zlILmjv(UMQtDY|n#>DXOX0x9CG%55$qkTR~IgZk&My>lYlC;cM0MdjgG|3Qu)Fn?E z6@%0i))3!&1^j^Tx40lnk@4@l+zsEa0swOnYoxs@Nnz8{-6x)S(BGn24M@o(B@}Lc zp?Lb}NpI|_#4^>%H&a%P$0fjMIsy|)-8D7Is32;2Z3%&b$a`KIp5Ao~AM*}v6t-i}jkjici;{9zj2W_&E+#T0Mf~nWf1mAEC$Ck@VQN2{iSK0IkLrpG22j}Z z#&G+aGPsw4k*9BkkliDL_mA7wIV^%x{RWtM$H#*=htd^-*Tvb?PaXGR1TQ?ZE~NH6 zIFP<_KKJfP#s!nyzn#M?CuAO7859;`fFnTI3XbV&*GD@iONjLbdXYk@sv3Avp}OpR z4wbga+q)gI!k-T^0^_{~N*rwnN9)j{ljAuN;4Rl(vEMh-S!nDL7qS!g@iqvK*uP=U zs52u}dm{d`0W{;9D4VZfy5A@;Jd_ffs7dypbXUU2-B{zn!(IY;{?GcK){_q-@Mqb< zCqizN5l}1ir>H9L2oZBuxs_|$t_D(`#6ka)vBtf!vP^qG#Kj7OG$w%9sZjnmDI~`6 zuI_SGQf)}vR}3WRsL@h>Xftoqv43yATiIK(2a>)-XOYy|)HjY!YB-sVY(gqrV-MYj zj-+Ae*PEra590c2@K=tkxvfQyJBC?0QsaIXJcH~)1cl$}byFLTE2=$@uOToVjfS>t z;=J!=wUt&s6J8C@qxZDv)bnjC_Oz^A#{2#BCo9d%`aFxk5;8zrDd#ykRbzi-<@hi9 zp18e}ffhT?HBS$k{b<1}jgJ$xXA(y0*VV!gb4MOhWiZ6cRL0 zfc+xbFNHYluXu5Y6j_6mse&52NIcB+r!Z!MHq!T|MTufEh!_}E{eXeREt1{OD+o3c z>MZRqAh9*Dw=EVeAu6ibyQ~8{ikm%o&gO9K82;!Skw;#`f36dG*ktRFy!<_>7B+fp z_GDtc8(_n+IkZ1===Ffln?FWjcrCMB>RI*H8wqaFwZ^=OtH*35R{OZbaN^gY5|(Ir z{qlD#UYp3DJ>i`(ZZOexCK;^QV8K(L4?sZDThcg@|7jBS?Y5GS^cmx^io?kUUt(y7E>}pi z{4s=Ur=~t#XK|~BaCb-Dd`MjE1HA-~a9)Gh6CkU_nA{NRee3zPH_D8=IJF(kAKw0R zSH1~-Ft*b?A6WWhpXa#${}uI};cPx`)Im|&i!M}aR4J`lqttFojas$$s#SZ>AX-%| zMNymBd+!;cs1c$Xd&Q0&L=ZCG{QmEIUGJwnUvoY8bB}YM` zft~yBsOfL;liQBPOf)o;HRRIE5tv4|GFlo@12~{v*BG9UR7Mae z10wpU0W=Y0R(E>N0-!|L*p$McRFmw>(buyGzKK_X`fW_CstGy_Ii6;-hlDTuV5Ch{ zFTWGx?R4A-T0Xwa3G^%>v)>y%*_X3BTec=G3ofPBMXP?tnFz*^;%T+nIU`%jFfOr& zi9`4$zpTs|Vu*;8-jUK>zUNreS7CXz_(`pnm3-YUR%)rrDG`^JmK|ZQxGsgvuBbhP z#`Tqy;x_`iv$0|ws+uZs29d)~ip7Idh_I7e0d;iM(|seU%U_=J??MvhoO0Pr9YPy^ zCG37qtl1MHmmpYET=!za}G&Gi%>x>F=?Kt`s@50KHu}vTq=q&0u;}UIRQ?uJbRic+yGj|`LA>=^#_eRBj`nZKpX+&I}k6x^Jb;W~@XgJiHLwu2F`BlqkD##0IzkOv4!p={$D zNCDZJI{pd|Y4Pyen*(3IMUcfM&rQuchAKJ{;RdP!$m{ZF`}|{!zH$$sXLr zEj&UhnVk8f0{mAe4-X7}L>Ljvone6Dt1Y|f=+8yJ1gk$5&)>_A8J_`RjjJ~bl}<+2 z2b9k5W+=WsKZIj3$7YvL%75vP)nW~%mver)^3LePoScU465!wr6E*Gx74Z2~Eb_`8 zCb@*nx&86xm`^kDjco2iY=CQjLv!Iv^l!;x+ZUzP?t{0jn1bn>x*-m=Ex6mfw#;0H|6GsI`8Kj%OWd4TC0JM@1sg9 zQ$*jT>~oe$S&Ls2Ch^~_cr0G=?4KRpaNAHb64{Pg-qDTAo#^Xm$|GG73$cC== zY*mdM4w#2eZr2@&>>!<<*G4?TcSgmf=TEmGL7=KMM0`4jv{i(H5MYp#fw3*PHyPKT z9r$899e-x?I7pjy%?W`PNiN65$ZZ}Iv_4KQ@lIh=+J*AP6M#%QVu(r{Qb~;A-ur8 zf7Uw-hack^Y(;{+NeTGB_`|=*u@5-dS+JJHWzBADE&_L~(KYKTE0z0U$aYt9zCl;? zfoJT4Z!#Wg)?XU*@9Z~GxVr$~x9XK;aJBkBeAOtjlEL)HQMeRXBy;y#_JU>5ePRev zG^K*92v{_YQ-U34e~>L}hno)a>1MJsWM^bbV{*BQn(8e&CZ?DIfYCoG5{*)=a3N%+bNtkNg9&<~6AAe@{*hD$ z$~SPkeNsTo>zG;ujZqrWJ>@o=k#+*~qZ8wyf%N^>0U=qApZ{JXhLyD5$xXVsTu%t5 zG^EeljXmUbo4X}VJ2*3Vf%tPJe7hV$=SBL~!(tj*s*dDw!z_jTIK!2W%1~V>iDm3i z-HQFw#SAusWW9O8*PvC(3~H9Y(K`{sU<V%BE%EIlrqPHk|{ZulZWnX8bg25hare^<+Z z+^wzUd1E`V5lkjwyV4%v72*@W<5!RHOoejSbSD1k5c-oN)7E@B*O(*oSOKQ*`m%uP z&LkujdN}`gmXQxzN`%aawExr_PjFg78{>k5mNV5i40SpiepS^6TVq;}l(g;BAU8sUL}iG_*o}hD$;H9rOp!e1nL% zta|Z3hH;*TkmvOv(jZ6PG0T)u-R2PsRcAn6*~I9um7?>UG|1V(Qp>|~qTqo-rC^p~ z=(*%2bX58J`|2l~&*Vo{*0VY{f~$(5ghfbT&GJxuXj&IFb=qJTQt*MX1Q4jN_SP|zEnWos3JYnCB3wM2;hUBdH)pnS_(+ufQs1kY@e z6Na|OCUoPdWGh$QySjr}<8A_0guhaA$<8@+;`cjoV5 zv+7y6?%7LF4r@_j=xknvSrPGbJxb|_aP-e0Hx=YQd%mm%K;$L>L0*sU0}PC*B3xZ6 zFoB4f)?$0XgQ~V5_=}S!LV{t{~^*D zazF5-aV6h+227uC7R|gSR;Hh&KwtBL)x|6&iy$VNEEDK#7oE#)5aW7Z=)gZ}iYC;D=&C3qu)u3*U0Y|HCZ~{y%PEL&hx%66r9^{|QjA z{Lf(Yf2@j265&7jiBj{koeX@Ey+IKjjmA>WTb_If&G&nPE3#+qTlTD{WTgYXh@e-{Lnyw#7Sv=tFYRhwvbt z!jfz!g|p6QMxXy}doN2v)f+^YU;mgHl4{Q~Pp2j?PnJU)D1n8?@wQR|FH&hsKw*}k z#kIIa9~a?#xFIBu=zSpo@rihl)N;$t9{8$osPngL zK=Pcz0JN*j!*muPOb(lUJ0i$Ig(rVbRGGqfmnSrFT1JiDRe@rF=i9g|ngaYaTf|jS z`10sI&3(D0o(DRU68H z&x$SNSIT~$t$R(HJw-`w!mirr<1gQZUeI}HM^=TuxwVfsSe3YRxfgwaC0u;KFc^cL zi?D9qzTy72R4DC7hRN>Hl&A+@7ZK(WJ8qYr|HB=5o+4rUUOB27Fa3#*P7%?3l$}oGt$BI1?E-C=xRFZFD@gJVaZ&IeO9UgZpEcj53%%t;?{Q==u01 zvJqKZEo0Fre!0P?4*oRQE0=mBWY7U;q1F^)M)SKN0|qcVmBpsi+d$1Vvo zU_tDC`27j#&9j6n9m9;(nNzP#^ITW(dlm( zLTSH|bGq2`1&guAwYtym3se2JSVUIFqcbCh@?BG^_FB z@7=-3P;)RRVeca|-~+W_4pXO?SC<#Xf5n9W8gaBudKB@DzRiVuRYXfb{<`~FN#t2h zttW~;A^&@I;QG3Ome^!-gfodG&K403aCwcAT-)?|g|GCClE4$J0!+ zS9;JFDvko*X~#C6ml99==|fWTGX24`)A`MsCK7hX)DS(v)@{(All`^I8CZR04U0o* zy&!Uub9@>mn`Y+5Ic3b>(bwXYUM1CODf9fFmi7`JYemasf5;$hpWXZpK6N zwXYCkPhqKEo}s}s?$-rtW*J{dbezI#Gc*QUt<3qtLrYKI>bC!Zfx*fw^A>4VOPA}0 zWBQJRm}g2NZ&joc+?veKB9r!T7*!K{uJRvOoq=uJhdE}Qm=}RXUkrw9C)S-fH6QAR z7-&a@Do-YXy)zYq!_Js4ZZ^nbOd%|pv2X%BgNsy-z>(xhLY>aDI!8(ST8anJ4LBj` zhMjMmdcC7MU%*oj@GN~GI1}-E-&or#0M&9_>xkO1 zH;l^ro)sAJyi&X=e!(P89S};K@cTUTnGryE|EmK)=I;vr4E?X|uq1|kPI=8;O!o|2 z7!iAVCtS_t)g#O^KzEM^=b^Suu;no1s#t_xtTml1b4716Ptm~wKnOSCY?5S^L8)WEX=lHeGSCI+nhpM#1g7%Gq_uX!N>h+d}J`)Qlw1$ zu=gqu1}42wWKa_p`dCvFI{ffKc-JrbAI_aMb60ZWC$sp?Ae!2zk>YPYCeF!|u(>vV z4m4cK*GS6giQi$sNp_U4^?Thjz8h<WD4ObCqOIHC+p z)0MxL-E4L$wIh|;uYPt*@I$q-8Fp^CKJ#u|*werw{&Al&{H5l(`F8FSCI&6({RzZy-wm~1Bgt;woSp`VV=7=6-DO$Q&JsE+d=1w&(pGg|7 z9UNYj2-SA3TcTBQhS)>BZRR`J?Df$fVX?yo06Qf1!Y>?A%ijWk~!UrJ*288$(BTxLb6|+RDAhsyMNrbx*TT<&uER2 z&EWCFF1d{{*l52yL)<53F$i*?2}F%;8DF0)@Y?b7 z_0hadW6tqGs4L;qnd$i&wAEm|Jh49W{4{1>{adR9OTFFWP93Iwrb}{P`AV;_!??Q0zLP z^8Aj882<3JxGAQfSxBc1lchO0+d-O)6gd>HBqhon%{BaGZNQGh05^tQ=I_>KKe}Zz z&ODd-6$}cUw!pr&Yg=gUIk8^Uk5Z{S3(qNL5gF>aqRYE3%dMbs;*1eZEm%u(IQlI<`XAQ_r0~_~9*Pm;x#>e65eU^^ILnF-hDM@W z5l7|a-x*xtqpnHL5rEAA6Ir5}SvWHsOl@IKsJj!H;qmzocFafhP{6OU1upc}8a}A8 zHa9-nTH9s4cMiEQ2}{4Oh`ABBQ3#Ts8M5RX0c@C*C9hlA^NJRK&;$oIhxKBdnl(df zUi4BweAv>iVBEeYcksdRK#@IasjiNFw^ywKn1*`1Y`K{*(c-{AIti0{FH7TA)|Lx9 zD`#lqxcZPVT8^m#T94&=o>fHNtj~ZZ79Uu*>Q_8n^TQmFIN7%%Jd|NR*e4sM5{u?B zF`^yS4r@V5wUz0!IBT6$sfwj5aB$crZmD-+{8pYIymIEXu~ik)Y@ZvoUQAH@B{Y&W zg90v(XEa~jWX>@+3P6K*rn)pzS!z)hV_(h^{IB08{0dTqOOIoq)>}pKGsRm6H`b^| z*c3*BUS4m$lhE?kkMaDApNY)%sQ4$IT!p@f(6hh!2r+`5CJos+j<+#fNH~ar;giKP zCAIc@8A%`gflm3#!r?nF#Kpg9QIT#r&t(b3R9Fngh*c;-dPxpCZGH{)E|3OrFGv!+ zl0x5L(MR1kSla2!vib56dp8vQGZt+P?eSrkzxR`iiadZcrv;fzOFH~-04YvBdh19< zN6A|ATpW;gt@0wFkFTzTsW53dB%mtF1h7TXgM4i}PZ1DthVuE|XmE#@f;@U0l!P7U zPr8S8+tPuzi1J3VYML=&|9)s3KQoda4~K9BcD8an15VZS_=8)7o6n3 z)t$0;ki7~PZn5Ap|I!I{x0r9gEiZ1iQl>bdBT%Ga1(_%ySeyNomX8)1I<93~))yVu z8V_cwJtZvW2wWI%{^R{={6R;;y{xsS#x?WV1mi@3sz)Wu5(q9}k4gZV;S(g8p7486U&*Cq;LgNm|~k z=Yx0?L0%)qDg1$ZR=0zwwNixC!<6r8hi(l@wZIeu3oW_qTqWy)H+2} z5#DOOeRN_ngNu1tF%u#&E_QgOM40ui>&ETvh_B>)lCxeU_@mmLetkRURD8TPJBJ`y z$+jAC>MUV!pizuN|DZ5S-zI6|OPAZ}=DdciF&g&gA_=r0CBzikmI%5gc7#dzVUZsO zKV5kXPTiKqc#kJWeSF#7oXXPr#;XoO*z@$FX9{<$B)B}YN5 zD_kXdV9R(i6bj3=#Hutl?|Ozfskrf6wyO9Z^yG7c;uY9#4kiyDD3zud32cq%d+ev2 zxLFa7z!?_eT5iAa=hANX^P)P%v$hG0Pjs9=`^24M4Ac0>1az6ECCILz%b!S2Bn5Wx z_w-%BvaW)_k%h*)ubcQFY%jw4vWYEbiYA@FaA- zm2Ense18+rh`xeQoKgT-SUW8`V=~?X09}U9B)h6}yHq7G-t-yeQ}+WvKI1u}Q)7F3 z;~v_g%Py0B`ll_JmOYV5VfcjuIAt(EG}tizG93Jos~!KHeL>S#fWX!&A#;LK(jJTX zVZ8DC9`>Q_?YEu-tevL?u@&LIIv+y=&R|U|Q4~iQ!bVgn!DT|E;`zrvpA#l`PSC}! zd~Y&wBc`kC{ReILE1K;088!x#wp$xB`74%@%}zQ0W`jB*VE4w*v^l*I&o_42?kkU) zKOaL|KaWV@{~riJf0JCo0Dum(g}*KNcbHV*$8!EZ0D^21N_Gn+gAvsKd!QwO8fC_6 zo=jJGq+nN#R1<-hs!s|p4=g=A<6S^rM{n(Ev`{fpquY|>i1~knZ=-tyV7iUL$B)IX zW*IFvWJPL5s7cQ^6RgA{Rip}1w^ySO%9g>Tm=u*U9nw~=@}=d#eAq|FR+_!gfl+y# zk)MNm#mPAWs)-oiqQ`u?e9JGdWcZgg-vBLM3uNRs-9qd@fIcPT^8b3^` z)M?b=rwPX^u6aHDbXrduob6Tt-jC@-=t+8r+>oX{b>DAt)1MpzrxvaZR|&rslG|RO zwI+oV=9Q#Z!{P(ePZw$h2wmRUds;u`W$)85e2f^?3guUzwy;cUOO%YL`}%C03{3h!pre~b;3*S~p@6fKS{bs0xM1WCqxh2kkBh=vqoG*lY2n48m zIvuwAn|=@kytlUGh?+K3c;5d1~{XqFrh9wadDYv+r+~` zVbao{+;&9mf*L9jC~~idJ6kV{p)w$$#K5=sNDS|FV2f+Cx+CAjgs(}yXq2(aInY3; z4?d-D(yx@KBc}P!{AikH-wquP9OH$obLMlPTwqY)LjCG3yCYj3;$YT})iGEu{A1(! zI9ymxYo$52lH@dcuwKpt3fw=;FfZpREQAJF(|b68@0B> z|Gc`C&*Zm%@HAi&CpNNYk_fu{uB7gB8)^J5qARHM&eNM>o8hrFk$mQ;DZ!P4s{pDV z&a|n`gv__12_NVM{PYr#IBWgo;Fpg9ZGFs|5N)G<#2na2Iv&W$VxHC6+z8a>y=>kw z5uJx7*w-p^E~+5VN&$8>JGR)`p z!im^3{Cw0Tz1wPkE^Fg{b|=%eLe2i3~&%zd=yv$dmh#AB*NQdp~7{R0K;q?LkoG-pC$DHV_gEn#Hf~9Kx zGWR8~s`geH&)EWLEVuAwVkAlY@zQU3&^DuDwqJs5lQdtq-y_B)Ce3!gmgRmDGZa;AqIm9v+?Z1=%)N5f zp3-z&25c)4j!)6+#hSEIS5VYG(_W%FN(Z&3KYjltA^^ zcw6yaV8#7AQzxy&rFUc9>Z4S)##fCOi|57xsfkjq!M@o3%y^)}nQJKAIb5dR>{_w- z1@@G(&~YbK+PP-i2R<7Xw+W2pHzOrVxVju4OvpxoNT(%w0#k+gGA$(dlQGkJc zV*`u7Tgfc?7B+58W$>0*eYK8$sVu`N`bjW&mI{~Je6T=gLamnf-$>a-0@WpjByKn^ zkV$y;w?$c7#vdm?`sqwRtJd^SRfBWqC++0@>-!OnWM(b{@n+s%st71WleO@{n#JQg z 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 diff --git a/edewm/tests/sound_test.cpp b/edewm/tests/sound_test.cpp deleted file mode 100644 index e000351..0000000 --- a/edewm/tests/sound_test.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "../Sound.h" -#include - -int main() -{ - puts("playing...\n"); - SoundSystem ss; - ss.init(); - ss.play("demo.ogg"); - ss.shutdown(); - puts("done\n"); - - return 0; -} diff --git a/edewm/tests/testpositions.sh b/edewm/tests/testpositions.sh deleted file mode 100644 index 85d4c9d..0000000 --- a/edewm/tests/testpositions.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh -# -# $Id: testpositions.sh 1672 2006-07-11 14:13:16Z karijes $ -# -#= -#= Usage: testpositions.sh [OPTIONS] -#= -#= Test position where will be placed newly created windows. -#= -#= Options: -#= -p [program] run program -#= -t [number] run [program] [number] times -#= -h show this help -#= -#= Example: testpositions.sh -e gvim -t 1000, which -#= will run 1000 instances of gvim. -#= -#= NOTE: if you try this with some heavier programs -#= (mozilla, ooffice, etc.) swapping and possible X crashes -#= are not due window manager. Just warned you ! -#= - -PROGRAM="xterm" -TIMES="10" - -help() -{ - sed -ne "/^#= /{ s/^#= //p }" $0 - exit 0 -} - -main() -{ - if [ $# -eq 0 ]; then - help - fi - - argv=$@ - for argv do - case $argv in - -h) - help - continue;; - -p) - unset PROGRAM - continue;; - -t) - unset TIMES - continue;; - esac - - if [ "$PROGRAM" = "" ];then - PROGRAM=$argv - continue - elif [ "$TIMES" = "" ];then - TIMES=$argv - else - echo "Bad parameter '$argv'." - echo "Run $0 -h for options." - exit 0 - fi - done - - for((i = 1; i <= $TIMES; i++)) - do - `$PROGRAM`& - done -} - -main $@